我正在使用PHP Lithium Framework。有沒有辦法通過配置來設置安全=>'多數'。使用Li3爲MongoDB設置safe =>'majority'
我正在使用mongodb複製,並且希望確保在驅動程序返回成功之前將數據寫入大多數replicaset成員。
我使用PHP 5.3和MongoDB的2.2.x
感謝 高塔姆
我正在使用PHP Lithium Framework。有沒有辦法通過配置來設置安全=>'多數'。使用Li3爲MongoDB設置safe =>'majority'
我正在使用mongodb複製,並且希望確保在驅動程序返回成功之前將數據寫入大多數replicaset成員。
我使用PHP 5.3和MongoDB的2.2.x
感謝 高塔姆
這不是一個直接回答你的問題,但你可以設置在數據庫中的默認行爲。
cfg = rs.conf()
cfg.settings = {}
cfg.settings.getLastErrorDefaults = {w: "majority", j: true}
rs.reconfig(cfg)
而且在鋰你應該能夠有一個過濾器來做到這一點:
Connections::get('default')->applyFilter(array('create', 'update', 'delete'), function($self, $params, $chain){
$params['options']['safe'] = true;
return $chain->next($self, $params, $chain);
});
查詢
或者直接:
if (MyModel::update($query, $conditions, array(‘safe’ => true))) {
// success
}
我們有一個open pull request這將讓您將'safe' => true
添加到您的數據庫配置中。很快就會合並。
否則,Nils發佈的解決方案應該很好。
謝謝Nate,我會實施Nils的建議,直到功能添加到Li3。我的項目將於2012年12月開始生效,屆時這個功能將可用。謝謝高塔姆 – kobra
感謝Nils,我能夠測試併成功實現解決方案#1和#3,但我不確定我可以在哪裏添加過濾器。 #2是最好的選擇,因爲我不需要更改數據庫或將同步添加到每個創建,更新或刪除調用。謝謝Gautam – kobra
由於這是與數據庫相關的東西,我會在數據庫引導文件中添加過濾器。 – Nils