2

PHPLithiumFrameworkを使用しています。構成を通じてsafe=>'majority'を設定する方法はありますか。

私はmongodbレプリケーションを使用しており、ドライバーが成功を返す前に、データがレプリカセットメンバーの大部分に書き込まれることを確認したいと思います。

PHP5.3とMongoDB2.2.xを使用しています

ありがとうゴータム

4

2 に答える 2

4

これはあなたの質問に対する直接の答えではありませんが、データベースでデフォルトの動作を設定できます。

 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
}
于 2012-11-12T06:28:17.550 に答える
2

これに対するオープンプルリクエスト'safe' => trueがあり、データベース構成に追加できます。間もなく統合されます。

そうでなければ、ニルスによって投稿されたソリューションはうまくいくはずです。

于 2012-11-12T15:31:03.997 に答える