PHPマニュアル/PEARマニュアル | ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot

MongoCursor::timeout - このクエリのクライアント側のタイムアウトを設定する | JavaScript入門&応用&リファレンスなら「JavaScriptist」

  

MongoCursor::timeout

(PECL mongo >=1.0.3)

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

説明

public MongoCursor MongoCursor::timeout ( int $ms )

タイムアウトはいつでも設定可能で、同じカーソルでのそれ以降のクエリに影響を及ぼします。 また、データベースからのさらなる結果の取得にもこれは影響します。

パラメータ

ms

カーソルがレスポンスを待つミリ秒数。 ずっと待ち続ける場合は -1 を指定します。 デフォルトでは、30000 ミリ秒 (30 秒) だけ待ちます。

返り値

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

エラー / 例外

指定したミリ秒数を超える長さのクエリを実行すると、結果を取得するメソッドが MongoCursorTimeoutException をスローするようになります。

例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() を使いましょう。

参考


忘却曲線を使ってこの知識を確実に記憶に残す

フォーラムで「MongoCursor::timeout - このクエリのクライアント側のタイムアウトを設定する」について話す
各種マニュアル: PHPマニュアル | PEARマニュアル | Smarty(英語)マニュアル | PHP-GTKマニュアル | MongoCursor::timeout - このクエリのクライアント側のタイムアウトを設定する」をGoogle検索
copyright © 1997-2024 PHP ドキュメント作成グループ(ライセンス). provided by php spot. マニュアル: