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

      

  • 相关阅读:
    linux sleep用法
    linux下set命令的参数及用法
    给vim编辑器自动添加行号
    linux一些基本常识(三)
    shell脚本面试题
    linux下字符串的比较方式
    浅谈Windows API编程
    WIN32 API ------ 最简单的Windows窗口封装类
    Microsoft函数调用约定
    Android UI 设计规范
  • 原文地址:https://www.cnblogs.com/achengmu/p/5872846.html
Copyright © 2011-2022 走看看