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

  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值