0

我有一个 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,所以没有抛出异常,我上面的代码有什么问题吗?

4

1 回答 1

0

如您在此处阅读的,insert仅在设置选项时引发异常safe

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

如果设置了“安全”选项并且操作花费的时间超过 MongoCursor::$timeout 毫秒来完成,则抛出 MongoCursorTimeoutException。这不会终止服务器上的操作,它是客户端超时。

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

于 2012-09-06T05:58:36.203 回答