我正在通过PHP客户端库运行一些map reduce作业:
$m = new Mongo(MY_CONN_STRING);
$db = $m->selectDB(MY_DB);
// run the map reduce function inside the DB
$db->command(array(
"mapreduce" => "CBD",
"map" => $map,
"reduce" => $reduce,
"query" => $filter,
"out" => $out));
我想立即将控制权返回给线程并让map reduce命令在后台完成,但是目前MongoDB :: command()正在阻塞。
有什么想法吗?
答案 0 :(得分:2)
不是真的。您可以设置客户端超时,以便命令立即超时,然后再检查$ out集合,但您无法检索命令结果(或查看它是否成功)。
强制立即超时看起来像:
try {
$db->command(array(...), array("timeout" => 1)); // timeout after 1ms
}
catch (MongoCursorTimeoutException $e) {
// do nothing
}