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'); } }