2012-08-30 51 views
1

我有一個主從數據庫。爲了平衡一些負載,我希望所有的INSERT/UPDATE查詢都進入主服務器,並且所有的SELECT查詢都轉到從服務器上(因爲你不能在不把服務器搞亂的情況下寫服務器)。我有database.php中定義的數據庫。這是我正在試圖做切換:

裏面的AppModel.php beforeFind(),我設置:

$this->useDBConfig = 'readOnly'; 

裏面的beforeSave(),我設置:

$this->useDBConfig = 'writeOnly'; 

但是,深入瞭解後,我想知道如果useDBConfig是一對一的關係模型到數據庫。意思是說,也許useDBConfig只是用於將單個模型指向單個數據庫,因爲這並不總是像我所期望的那樣工作。有時INSERT/UPDATE會嘗試在readOnly上使用readOnly權限運行並失敗。

如果是這樣的情況下,如何更改我的CakePHP應用程序發送請求到相應的數據庫?我應該以不同的方式做這件事嗎?

回答

1

基本上,您覆蓋AppModel中的所有保存方法(save,saveField,saveAssociated,saveAll,UpdateAll,delete,deleteAll等),並在兩個setDatasource調用之間封裝父調用。

+0

太好了!我不知道該從哪裏開始。兩個簡單的問題:1)你有沒有試過CakePHP的新版本?我認爲我們目前在2.3.7上。 2)你如何處理生產/開發憑證?這兩個數據庫設置是否會變得棘手? – emersonthis

+0

@愛默生是的。我目前在2.3.7上運行這個。如果您需要與生產/開發環境配置幫助,您可能想看看這裏:http://blogchuck.com/2012/08/custom-configurations-for-multi-server-environment-in-cakephp/ –

+0

@ChuckBurgess:您提供的帖子的鏈接已過期。你能更新鏈接嗎? –

相關問題