MongoCursor::timeout
(PECL mongo >=1.0.3)
MongoCursor::timeout — このクエリのクライアント側のタイムアウトを設定する
説明
public MongoCursor::timeout
( int $ms
) : MongoCursor
タイムアウトはいつでも設定可能で、同じカーソルでのそれ以降のクエリに影響を及ぼします。 また、データベースからのさらなる結果の取得にもこれは影響します。
パラメータ
ms
- カーソルがレスポンスを待つミリ秒数。 ずっと待ち続ける場合は
-1
を指定します。 デフォルトでは、30000
ミリ秒 (30 秒) だけ待ちます。
返り値
このカーソルを返します。
例
例1 MongoCursor::timeout() の例
この例では、最初のレスポンスはずっと待ち続けるけれども それ以降の結果は 100 ミリ秒でタイムアウトさせるようにします。
<?php$cursor = $collection->find();$cursor->timeout(-1);/* $cursor->hasNext() はクエリを実行します。タイムアウトが設定されていないので、 * レスポンスが得られるまでずっと待ち続けます */while ($cursor->hasNext()) { $cursor->timeout(100); /* タイムアウトが設定されました。カーソルからデータベースにさらに * 結果を問い合わせるときは、データベースからのレスポンスを 100 ミリ秒しか待ちません */ try { print_r($cursor->getNext()); } catch (MongoCursorTimeoutException $e) { echo "query took too long!"; }}?>
注意
警告 これは、MongoDB サーバー上で時間がかかっている操作をキャンセルさせるわけではありません。 ドライバが結果を待ち続ける時間を指定して、それに達したら MongoCursorTimeoutException をスローするだけです。 サーバー側でのクエリのタイムアウトを指定したい場合は、 MongoCursor::maxTimeMS() を使いましょう。
参考
- MongoCursorInterface::timeout() - Sets a client-side timeout for this query
- MongoClient::__construct() - Creates a new database connection object の
socketTimeoutMS
オプション