切换MongoDB主要时不会抛出PHP异常

时间:2012-09-06 05:24:17

标签: php mongodb

我有一个MongoDB 2.2 replicaset设置(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 stil给我 1 ,所以没有异常抛出,我的代码上面有任何问题吗?

1 个答案:

答案 0 :(得分:0)

正如您可以阅读hereinsert仅在设置safe选项时才会抛出异常:

  

如果设置了“safe”选项并且插入,则抛出MongoCursorException   失败。 (版本1.0.1 +)

     

如果设置了“safe”选项,则抛出MongoCursorTimeoutException   操作需要比MongoCursor :: $ timeout毫秒更长的时间   完成。这不会杀死服务器上的操作,它是一个   客户端超时。

设置safe选项,您应该能够看到抛出的异常。