Php 设置安全=>';多数';对于使用Li3的MongoDB

Php 设置安全=>';多数';对于使用Li3的MongoDB,php,mongodb,lithium,Php,Mongodb,Lithium,我正在使用PHP框架。是否有办法通过配置设置safe=>“多数” 我正在使用mongodb复制,希望确保在驱动程序返回成功之前将数据写入大多数replicaset成员 我使用的是PHP5.3和MongoDB 2.2.x 谢谢 Gautam这不是对您的问题的直接回答,但您可以在数据库中设置默认行为 cfg = rs.conf() cfg.settings = {} cfg.settings.getLastErrorDefaults = {w: "majority", j: true} rs

我正在使用PHP框架。是否有办法通过配置设置safe=>“多数”

我正在使用mongodb复制,希望确保在驱动程序返回成功之前将数据写入大多数replicaset成员

我使用的是PHP5.3和MongoDB 2.2.x

谢谢
Gautam

这不是对您的问题的直接回答,但您可以在数据库中设置默认行为

 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
}
我们为此提供了一个解决方案,允许您将
'safe'=>true
添加到数据库配置中。不久将合并


否则,Nils发布的解决方案将非常有效。

谢谢Nate,我将实施Nils建议,直到该功能添加到Li3。我的项目将于2012年12月上线,届时该功能是否可用。感谢Gautam感谢Nils,我能够测试并成功实施解决方案#1和#3,但我不确定在哪里可以添加过滤器#2是最好的选择,因为我不需要更改数据库或在每次创建、更新或删除呼叫中添加同步。谢谢Gautama,因为这是与数据库相关的东西,所以我会在数据库引导文件中添加过滤器。