PhpRiot
Follow phpriot on Twitter
Sponsored Link
Become Zend Certified

Prepare for the ZCE exam using our quizzes (web or iPad/iPhone). More info...


When you're ready get 7.5% off your exam voucher using voucher CJQNOV23 at the Zend Store
Free iPad/iPhone App
Available on the App Store

  • PHP manual
  • Zend Framework manual
  • Smarty manual
  • PHP articles
  • PHP training

MongoCursor::timeout

(PECL mongo >=1.0.3)

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

Description

public MongoCursor MongoCursor::timeout ( int $ms )

A timeout can be set at any time and will affect subsequent queries on the cursor, including fetching more results from the database. For example, to wait forever for an initial response but timeout after 100 ms for subsequent results, one could say:

<?php

$cursor 
$collection->find();

// $cursor->hasNext() executes the query.  No timeout has been set, so the 
// program will wait as long as necessary for a response.

while ($cursor->hasNext()) {
    
$cursor->timeout(100);

    
// now the timeout has been set, so if the cursor needs to get more results
    // from the database, it will only wait 100 ms for the database's reply

    
try {
        
print_r($cursor->getNext());
    }
    catch(
MongoCursorTimeoutException $e) {
        echo 
"query took too long!";
    }
}

?>

A timeout of 0 (or a negative number) will wait forever so it can be used to reset the cursor if a timeout is no longer needed.

Parameters

ms

The number of milliseconds for the cursor to wait for a response. By default, the cursor will wait forever.

Return Values

This cursor.

Examples

Example #1 MongoCursor::timeout() example

A query where the cursor waits for one second for a response.

<?php

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

try {
  foreach (
$cursor as $value) {
    
print_r($value);
  }
}
catch(
MongoCursorTimeoutException $e) {
  echo 
"query took too long!";
}

?>

Errors/Exceptions

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

PHP Manual