首页 > 代码库 > phalcon:数据库分库,读写分离,负载均衡 系统方法执行顺序

phalcon:数据库分库,读写分离,负载均衡 系统方法执行顺序

phalcon:数据库分库,读写分离,负载均衡 系统方法执行顺序

 

用命名空间区分不同的数据库实例,对应代码结构上是不同的目录区分,在同一目录下基类负责初始化连接。连接来自初始化时注入的多个db服务

隐规则:

  • initialize()在每个请求期间只会调用一次

  • 为每个 new 创建的实例执行初始化任务使用onConstruct()

namespace Company\Models\Notification;

 

/** * Class BaseModel * * beforeSave()和afterFetch()成对使用,用于读写数据时自动转化数据。 * 例如自动执行serialize unSerialize * * save()发生时事件调用顺序是 * initialize, * onConstruct, * beforeValidation, * beforeValidationOnCreate, * afterValidationOnCreate, * afterValidation, * beforeSave, * beforeCreate, * afterCreate, * afterSave, * * @package Company\Models\Notification */class BaseModel extends \Phalcon\Mvc\Model{    /**     * - initialize()在每个请求期间只会调用一次     * - 子类必需调用父类方法     * - 为每个 new 创建的实例执行初始化任务使用onConstruct()     */    public function initialize()    {        $this->setConnectionService(‘db_notification‘);                //$this->setConnectionService(‘node1‘);        //$this->setConnectionService(‘node2‘);        //        //真实场景可能使用mysqlnd_ms扩展或者haproxy        //仅演示读负载均衡一种思路        //$dbSlave = [‘node1‘, ‘node2‘, ‘node3‘];        //$key = array_rand($dbSlave);        //$db = $dbSlave[$key];        //$this->setReadConnectionService($db);        //        //        //$this->setReadConnectionService(‘dbRead‘);        //$this->setWriteConnectionService(‘dbWrite‘);    }} 

  

 

phalcon:数据库分库,读写分离,负载均衡 系统方法执行顺序