MongoCursor::maxTimeMS

(PECL mongo >=1.5.0)

MongoCursor::maxTimeMSSets a server-side timeout for this query

说锟斤拷

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

Specifies a cumulative time limit in milliseconds to be allowed by the server for processing operations on the cursor.

锟斤拷锟斤拷

ms

Specifies a cumulative time limit in milliseconds to be allowed by the server for processing operations on the cursor.

锟斤拷锟斤拷值

This cursor.

锟斤拷锟斤拷锟届常

Throws MongoCursorException if this cursor has started iterating.

Causes methods that fetch results to throw a MongoExecutionTimeoutException if the query takes longer than the specified number of milliseconds in processing time.

锟斤拷锟斤拷

Example #1 MongoCursor::maxTimeMS() example

In the following example, the server will abort the query if the cursor requires more than two seconds in processing time to return its results.

<?php

$cursor 
$collection->find();
$cursor->maxTimeMS(2000);

try {
    
$results iterator_to_array($cursor);
} catch (
MongoExecutionTimeoutException $e) {
    echo 
"query took too long!";
}

?>

注锟斤拷

Warning

Unlike MongoCursor::timeout(), which specifies a client-side timeout, MongoCursor::maxTimeMS() can be used to cause the MongoDB server to abort long-running queries. This timeout is cumulative for the lifetime of the cursor (i.e. each batch will contribute to this time limit). The timeout only considers processing time; idle time is not considered.