您的位置:首页 > 编程语言 > PHP开发

CakePHP --- Load Balancing and MySQL Master and Slaves

2011-09-15 22:55 1256 查看
http://bakery.cakephp.org/articles/eagerterrier/2007/05/26/load-balancing-and-mysql-master-and-slaves-2

If you are currently using MySql master/slave replication for load balancing and wish to transport to cakePHP, it really couldn't be easier.

2 simple steps to master/slave replication in cake..

Firstly in app/config/database.php write the following:-

class DATABASE_CONFIG {

var $default = array(

'driver'                => 'mysql',

'host'                  => 'slave.host.ip',

'login'                 => '....',

'password'              => '.....',

'database'              => 'my_db'

);

var $master = array(

'driver'                => 'mysql',

'host'                  => 'master.host.ip',

'login'                 => '....',

'password'              => '.....',

'database'              => 'my_db'

);

}


Then, in app/app_model.php, create 4 new methods:

function beforeSave() {

$this->useDbConfig = 'master';

return true;

}

function afterSave() {

$this->useDbConfig = 'default';

return true;

}

function beforeDelete() {

$this->useDbConfig = 'master';

return true;

}

function afterDelete() {

$this->useDbConfig = 'default';

return true;

}


It really is as simple as that.

However, there are some instance where you may want to use a query in your controller where you update/insert information. In this case, use the following:

$this->ModelName->setDataSource('master');

$this->ModelName->query("UPDATE post_views SET views=views+1 WHERE id=1234");

$this->ModelName->setDataSource('default');


I use this where I want information to be updated, but don't want cake to flush the cache. But then again, that may be like crossing the streams in Ghostbusters, so don't listen to me..

With thanks to Nate and gwoo

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