(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 コアドキュメントの » tailable cursors。