zoukankan      html  css  js  c++  java
  • phalcon:数据库分库,读写分离,负载均衡 系统方法执行顺序

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

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

    隐规则:

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

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

    namespace CompanyModelsNotification;
    

     

    /**
     * Class BaseModel
     *
     * beforeSave()和afterFetch()成对使用,用于读写数据时自动转化数据。
     * 例如自动执行serialize unSerialize
     *
     * save()发生时事件调用顺序是
     * initialize,
     * onConstruct,
     * beforeValidation,
     * beforeValidationOnCreate,
     * afterValidationOnCreate,
     * afterValidation,
     * beforeSave,
     * beforeCreate,
     * afterCreate,
     * afterSave,
     *
     * @package CompanyModelsNotification
     */
    class BaseModel extends PhalconMvcModel
    {
    
        /**
         * - 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');
        }
    } 
    

      

  • 相关阅读:
    vue input输入框长度限制
    vue中input输入框的模糊查询实现
    腾讯云服务器配置node环境
    axios中的this指向问题
    腾讯云服务器 ubuntu 设置允许root用户登录
    nodejs+express+mongodb写api接口的简单尝试
    通过fromdata实现上传文件
    阿姆斯特朗数
    Mac上webstorm与git仓库建立连接
    iOS学习——属性引用self.xx与_xx的区别
  • 原文地址:https://www.cnblogs.com/achengmu/p/5872846.html
Copyright © 2011-2022 走看看