我有一个MongoDB 2.2复制集设置(2个节点),并使用PHP连接到测试,例如
$mongo = new Mongo("mongodb://192.168.1.1:27017,192.168.1.2:27017",
array("replicaSet" => "testrs",
"safe" => TRUE));
$db = $mongo->test;
$collection = $db->dump;
while (true) {
echo "Result: " .
$collection->insert(array( "ts" => time() ));
sleep(10);
}
在执行过程中,当我从主节点stepDown
时,我发现插入停止工作,但echo仍然给我1,所以没有抛出异常,我上面的代码有问题吗?
正如您在这里所读到的,insert
只有在设置了safe
选项时才会抛出异常:
如果设置了"安全"选项并且插入了失败。(1.0.1+版本)
如果设置了"安全"选项并且操作需要比MongoCursor::$timeout毫秒更长的时间才能完成这不会终止服务器上的操作,而是客户端超时。
设置safe
选项,您应该能够看到抛出的异常。