1

找到类似问题的解决方案 - 超时(-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        
    }

可能是什么问题呢?

4

1 回答 1

2

注意:: timeoutimmortal之间有一个重要的区别!Timeout 表示在客户端等待的时间,而 immortal 将光标设置在服务器端。

它对于分片环境中的大型结果集特别有用。

--

你在哪一行得到异常?

确保在光标上使用 timeout 或 immortal:

$cursor = $collection->find();
$cursor->immortal(true); // this
$cursor->timeout(-1); // or this
于 2012-10-09T16:57:29.410 回答