找到类似问题的解决方案 - 使用超时(-1);和不朽的(真实的); - 没有任何帮助:(
我在这段代码时遇到此错误:
$this->start_time = microtime(true);
$documents = 0;
$offset = 0;
$files = array();
$mongo = new Mongo();
$db = Yii::app()->params['mongo']['db'];
$db->immortal(true);
$collection = Yii::app()->params['mongo']['collection'];
$collection_serial = 'new_serial_number';
$serial_numbers = $mongo->$db->$collection_serial->find();
$serial_numbers->timeout(-1);
$update = false;
foreach ($serial_numbers as $serial_number) {
//some code here
}
可能是什么问题?
答案 0 :(得分:2)
注意:: 超时与不朽之间存在重要区别! 超时表示在客户端侧等待的时间,而不朽将光标设置在服务器侧。
对于分片环境中的大型结果集尤其有用。
-
你在哪一行获得例外?
确保在光标上使用超时或不朽:
$cursor = $collection->find();
$cursor->immortal(true); // this
$cursor->timeout(-1); // or this