MongoCursor::timeout
(PECL mongo >=1.0.3)
MongoCursor::timeout — Sets a client-side timeout for this query
说明
A timeout can be set at any time and will affect subsequent queries on the cursor, including fetching more results from the database.
参数
-
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).
返回值
This cursor.
错误/异常
Causes methods that fetch results to throw a MongoCursorTimeoutException if the query takes longer than the specified number of milliseconds.
范例
Example #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!";
}
}
?>
注释
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().
参见
- MongoCursorInterface::timeout() - Sets a client-side timeout for this query
- The socketTimeoutMS option for MongoClient::__construct()