MongoCursor
PHP Manual

MongoCursor::awaitData

(PECL mongo >=1.2.11)

MongoCursor::awaitData追尾可能なカーソルで、データがないときにしばらく待つかどうかを設定する

説明

public MongoCursor MongoCursor::awaitData ([ bool $wait = true ] )

このメソッドは追尾可能なカーソルに対して使います。 データの最期に到達したときに、空のデータを返すのではなくブロックしてデータを待つようになります。 タイムアウトに達すると、通常の場合と同様に空のデータを返します。

パラメータ

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->tailabletrue );
$cursor->awaitDatatrue );

while (
true) {
    if (!
$cursor->hasNext()) {
        
// すべての結果を読んだので、終了します
        
if ($cursor->dead()) {
            break;
        }
    } else {
        
var_dump$cursor->getNext() );
    }
}
?>

参考

MongoDB コアドキュメントの » tailable cursors


MongoCursor
PHP Manual