Phalcon框架如何实现读写分离
假设你已经在DI容器里注册了俩 db services,如下:
<?php
// 主库
$di->setShared('dbWrite', function() use ($config) {
return new PhalconDbAdapterPdoMysql(array(
"host" => $config->w_database->host,
"username" => $config->w_database->username,
"password" => $config->w_database->password,
"dbname" => $config->w_database->name
));
});
// 从库VIP
$di->setShared('dbRead', function() use ($config) {
return new PhalconDbAdapterPdoMysql(array(
"host" => $config->r_database->host,
"username" => $config->r_database->username,
"password" => $config->r_database->password,
"dbname" => $config->r_database->name
));
});
然后在 Model 中这么处理就可以了:
<?php
class UserModel extends PhalconMvcModel {
public function initialize() {
parent::initialize();
$this->setReadConnectionService('dbRead');
$this->setWriteConnectionService('dbWrite');
}
}