(PECL mongo >=1.2.11)
MongoCursor::awaitData — Устанавливает, будет ли этот курсор некоторое время ждать, пока настраиваемый курсор вернет больше данных
Метод должен использоваться с настраиваемыми курсорами. Если мы находимся в конце, блокирум на некоторое время и не возвращаем никаких данных. После периода ожидания мы возвращаем, как обычно.
wait
Если курсор должен ждать, пока больше данных не станет доступно.
Возвращает курсор.
Выдает исключение MongoCursorException, если этот курсор начал итерацию.
Пример #1 Пример использования MongoCursor::awaitData()
В этом примере мы подключаем "oplog" и вместо сна во время каждой итерации устанавливаем опцию MongoCursor::awaitData(). MongoCursor::hasNext() теперь будет блокироваться, пока не станет доступно больше данных.
<?php
$m = new MongoClient( 'mongodb://localhost:13000', array( 'replSet' => 'seta' ) );
$c = $m->local->selectCollection( 'oplog.rs' );
$cursor = $c->find( array( 'ns' => 'demo.article', 'op' => 'i' ) );
$cursor->tailable( true );
$cursor->awaitData( true );
while (true) {
if (!$cursor->hasNext()) {
// мы прочитали все результаты, выходим
if ($cursor->dead()) {
break;
}
} else {
var_dump( $cursor->getNext() );
}
}
?>
Документация MongoDB по » настраиваемым курсорам.