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

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

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

    隐规则:

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

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

    namespace CompanyModelsNotification;


     1 /**
     2  * Class BaseModel
     3  *
     4  * beforeSave()和afterFetch()成对使用,用于读写数据时自动转化数据。
     5  * 例如自动执行serialize unSerialize
     6  *
     7  * save()发生时事件调用顺序是
     8  * initialize,
     9  * onConstruct,
    10  * beforeValidation,
    11  * beforeValidationOnCreate,
    12  * afterValidationOnCreate,
    13  * afterValidation,
    14  * beforeSave,
    15  * beforeCreate,
    16  * afterCreate,
    17  * afterSave,
    18  *
    19  * @package CompanyModelsNotification
    20  */
    21 class BaseModel extends PhalconMvcModel
    22 {
    23  
    24     /**
    25      * - initialize()在每个请求期间只会调用一次
    26      * - 子类必需调用父类方法
    27      * - 为每个 new 创建的实例执行初始化任务使用onConstruct()
    28      */
    29     public function initialize()
    30     {
    31         $this->setConnectionService('db_notification');
    32          
    33         //$this->setConnectionService('node1');
    34         //$this->setConnectionService('node2');
    35         //
    36         //真实场景可能使用mysqlnd_ms扩展或者haproxy
    37         //仅演示读负载均衡一种思路
    38         //$dbSlave = ['node1', 'node2', 'node3'];
    39         //$key = array_rand($dbSlave);
    40         //$db = $dbSlave[$key];
    41         //$this->setReadConnectionService($db);
    42         //
    43         //
    44         //$this->setReadConnectionService('dbRead');
    45         //$this->setWriteConnectionService('dbWrite');
    46     }
    47 }
  • 相关阅读:
    判断当前时间为星期几
    springboot+mysql数据源切换
    表单上传图片
    po,vo,bo,dto,dao解释
    生成电脑的SSH key
    单例模式
    事物的特性和隔离级别
    springAOP自定义注解讲解
    Spring依赖注入(DI)的三种方式
    redis持久化
  • 原文地址:https://www.cnblogs.com/huanhang/p/7240230.html
Copyright © 2011-2022 走看看