您的位置:首页 > 数据库

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

2016-09-14 16:57 337 查看
phalcon:数据库分库,读写分离,负载均衡系统方法执行顺序

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

隐规则:

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

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

namespaceCompany\Models\Notification;



/**
*ClassBaseModel
*
*beforeSave()和afterFetch()成对使用,用于读写数据时自动转化数据。
*例如自动执行serializeunSerialize
*
*save()发生时事件调用顺序是
*initialize,
*onConstruct,
*beforeValidation,
*beforeValidationOnCreate,
*afterValidationOnCreate,
*afterValidation,
*beforeSave,
*beforeCreate,
*afterCreate,
*afterSave,
*
*@packageCompany\Models\Notification
*/
classBaseModelextends\Phalcon\Mvc\Model
{

/**
*-initialize()在每个请求期间只会调用一次
*-子类必需调用父类方法
*-为每个new创建的实例执行初始化任务使用onConstruct()
*/
publicfunctioninitialize()
{
$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');
}
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐