• 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 }
  • 相关阅读:
    P4910 帕秋莉的手环
    P3216 [HNOI2011]数学作业
    洛谷 P2894 [USACO08FEB]酒店
    [网络流24题]魔术球问题
    [网络流24题]飞行员配对方案问题
    [网络流24题]最小路径覆盖问题
    洛谷 P1503鬼子进村
    BZOJ 3631: [JLOI2014]松鼠的新家
    洛谷 P2922 [USACO08DEC]秘密消息Secret Message
    洛谷 P1379 八数码难题
  • 原文地址:https://www.cnblogs.com/huanhang/p/7240230.html
Copyright © 2020-2023  润新知