看板 PHP 關於我們 聯絡資訊
當系統越來越大的時候... 資料庫的負擔也會越來越大..這時候通常都會靠讀寫分離來讓 系統更穩定. 讓資料庫更有效率... 在 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:http://tinyurl.com/4t656z 也有人反應無效 05/31 22:51
tka:後來我是trace cakephp 硬是改掉他 05/31 22:51
kylekai:Ya..這兩天我也發現了...1.2 model 作法需要不一樣..orz.. 06/01 00:25