phalcon:數據庫分庫,讀寫分離,負載均衡 系統方法執行順序

phalcon:數據庫分庫,讀寫分離,負載均衡 系統方法執行順序php

 

用命名空間區分不一樣的數據庫實例,對應代碼結構上是不一樣的目錄區分,在同一目錄下基類負責初始化鏈接。鏈接來自初始化時注入的多個db服務node

隱規則:mysql

  • initialize()在每一個請求期間只會調用一次sql

  • 爲每一個 new 建立的實例執行初始化任務使用onConstruct()數據庫




namespace Company\Models\Notification;
 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 Company\Models\Notification
20  */
21 class BaseModel extends \Phalcon\Mvc\Model
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 }
相關文章
相關標籤/搜索