(PECL mongo >=0.9.4)
MongoCursor::tailable — このカーソルが、最後の結果を取得した後もオープンしたままにしておくかどうかを設定する
Mongo には、追尾可能 (tailable) カーソルという機能があります。これは、Unix の "tail -f" コマンドと似ています。
追尾可能とは、最後のデータを取得した後もカーソルを閉じないということです。 カーソルは、最後のオブジェクトの位置を指したままとなります。 あとでそのカーソルを使い続けることもできます。もしその後さらにデータを取得したのなら、 カーソルが指す位置から処理を再開できます。
他の "潜在カーソル (latent cursor)" 同様、カーソルはどこかで無効な状態になります。 参照しているオブジェクトがすべて削除された場合などです。 したがって、カーソルが MongoCursor::dead() になったら再びクエリを実行できるようにしておかなければなりません。
カーソルが追尾可能かどうか。
このカーソルを返します。
このカーソルが反復処理を始めている場合に MongoCursorException をスローします。
例1 MongoCursor::tailable() の例
<?php
$cursor = $collection->find()->tailable();
$results = array();
while (1) {
if (!$cursor->hasNext()) {
// すべての結果を読み終えたら終了します
if ($cursor->dead()) {
break;
}
// これまでのすべての結果を読み、さらに待ちます
sleep(10);
}
else {
$results[] = $cursor->getNext();
}
}
?>