MongoCursor
PHP Manual

MongoCursor::timeout

(PECL mongo >=1.0.3)

MongoCursor::timeoutこのクエリのクライアント側のタイムアウトを設定する

説明

public MongoCursor MongoCursor::timeout ( int $ms )

タイムアウトはいつでも設定可能で、同じカーソルでのそれ以降のクエリに影響を及ぼします。 また、データベースからのさらなる結果の取得にもこれは影響します。 たとえば、最初のレスポンスはずっと待ち続けるけれども それ以降の結果は 100 ミリ秒でタイムアウトさせたいというときは、このようにします。

<?php

$cursor 
$collection->find();

// $cursor->hasNext() はクエリを実行します。タイムアウトが設定されていなければ
// レスポンスが得られるまでずっと待ち続けます

while ($cursor->hasNext()) {
    
$cursor->timeout(100);

    
// タイムアウトが設定されました。カーソルからデータベースにさらに
    // 結果を問い合わせるときは、データベースからのレスポンスを 100 ミリ秒しか待ちません

    
try {
        
print_r($cursor->getNext());
    }
    catch(
MongoCursorTimeoutException $e) {
        echo 
"query took too long!";
    }
}

?>

タイムアウトに 0 (あるいは負の数) を指定するとずっと待ち続けるようになります。 いったん設定したタイムアウトを取り消すときにこれを使うことができます。

パラメータ

ms

カーソルがレスポンスを待つミリ秒数。 デフォルトではいつまでも待ち続けます。

返り値

このカーソルを返します。

例1 MongoCursor::timeout() の例

このクエリは、レスポンスを 1 秒間待ち続けます。

<?php

$cursor 
$collection->find()->timeout(1000);

try {
  foreach (
$cursor as $value) {
    
print_r($value);
  }
}
catch(
MongoCursorTimeoutException $e) {
  echo 
"query took too long!";
}

?>

エラー / 例外

指定したミリ秒数を超える長さのクエリを実行すると MongoCursorTimeoutException をスローします。


MongoCursor
PHP Manual