作者kylekai (我也想有閃光...)
看板PHP
標題[CakePHP]簡易實現資料庫讀寫分離
時間Fri May 30 17:16:29 2008
當系統越來越大的時候... 資料庫的負擔也會越來越大..這時候通常都會靠讀寫分離來讓
系統更穩定. 讓資料庫更有效率...
在 CakePHP 可以靠下面的設定輕鬆達到...
database.php 的設定中..
<?php
class DATABASE_CONFIG {
public $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => '192.160.1.110',
'port' => ,
'login' => 'root',
'password' => '1234',
'database' => 'cakephp',
'schema' => ,
'prefix' => ,
'encoding' => 'UTF8'
);
public $master = array(
'driver' => 'mysql',
'persistent' => false,
'host' => '192.168.1.100',
'port' => ,
'login' => 'root',
'password' => ,
'database' => 'cakephp',
'schema' => ,
'prefix' => ,
'encoding' => 'UTF8'
);
}
?>
先在 database 加入主要負責寫入的 master 主機...而一般負責讀取的主機就放在
default .
然後在 app_model.php 加入下面的處理...
<?php
class AppModel extends Model {
function beforeSave() {
$this->useDbConfig = 'master';
}
function afterSave() {
$this->useDbConfig = 'default';
}
function beforeDelete() {
$this->useDbConfig = 'master';
}
function afterDelete() {
$this->useDbConfig = 'default';
}
}
?>
這樣在實際執行的時候就會在寫入資料的時候自動切換到 $master 去進行寫入的動作了
..
--
我是上來領便當的...
逛 php 版, database 版只是順便而已...
http://blog.darkhero.net 個人網誌
http://phorum.study-area.org/index.php/board,31.0.html
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.62.60
→ tka:這個方法我之前在1.2的版本測無效耶 05/31 22:47
→ tka:後來我是trace cakephp 硬是改掉他 05/31 22:51
→ kylekai:Ya..這兩天我也發現了...1.2 model 作法需要不一樣..orz.. 06/01 00:25