LaravelConf Taiwan 2020 CFP Started

MongoCursor::timeout

(PECL mongo >=1.0.3)

MongoCursor::timeoutSets a client-side timeout for this query

Açıklama

public MongoCursor::timeout ( int $ms ) : MongoCursor

A timeout can be set at any time and will affect subsequent queries on the cursor, including fetching more results from the database.

Değiştirgeler

ms

The number of milliseconds for the cursor to wait for a response. Use -1 to wait forever. By default, the cursor will wait 30000 milliseconds (30 seconds).

Dönen Değerler

This cursor.

Hatalar/İstisnalar

Causes methods that fetch results to throw a MongoCursorTimeoutException if the query takes longer than the specified number of milliseconds.

Örnekler

Örnek 1 MongoCursor::timeout() example

In the following example, the driver will wait forever for the initial database response, and then wait 100ms for subsequent responses.

<?php

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

/* $cursor->hasNext() executes the query. An infinite timeout has been set, so
 * the driver will wait as long as necessary for a response.
 */
while ($cursor->hasNext()) {
    
$cursor->timeout(100);

    
/* A timeout has now been set, so if the cursor needs to get more results
     * from the database, it will only wait 100ms for a response.
     */
    
try {
        
print_r($cursor->getNext());
    } catch (
MongoCursorTimeoutException $e) {
        echo 
"query took too long!";
    }
}

?>

Notlar

Uyarı

This does not cause the MongoDB server to cancel long-running operations; it only instructs the driver to stop waiting for a response and throw a MongoCursorTimeoutException after a set time. If you need to specify a server-side timeout for a query, consider using MongoCursor::maxTimeMS().

Ayrıca Bakınız

add a note add a note

User Contributed Notes 1 note

up
1
Robert Ross
9 years ago
To set timeouts for all queries, do this:

MongoCursor::$timeout = -1 (-1 is no timeout)
To Top