我正在通过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()正在阻塞。
任何想法?
不完全是。您可以设置一个客户端超时,以便命令立即超时,然后稍后检查$out集合,但是您永远无法检索命令结果(或查看它是否成功)。
强制立即超时看起来像这样:
try {
$db->command(array(...), array("timeout" => 1)); // timeout after 1ms
}
catch (MongoCursorTimeoutException $e) {
// do nothing
}