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

      

  • 相关阅读:
    工作五年,后面四年重复着第一年的活儿?
    ECMAScript 6 扫盲
    当前端也拥有 Server 的能力
    简述 OAuth 2.0 的运作流程
    近几年前端技术盘点以及 2016 年技术发展方向
    NodeJS的代码调试和性能调优
    新应用上线 Snippet
    这两天说到的苹果软件中毒是个什么情况?
    网站的SEO以及它和站长工具的之间秘密
    博客搬家通知
  • 原文地址:https://www.cnblogs.com/achengmu/p/5872846.html
Copyright © 2011-2022 走看看