MongoCursor
PHP Manual

MongoCursor::timeout

(PECL mongo >=1.0.3)

MongoCursor::timeoutEstablece un tiempo de espera en el lado del cliente para esta consulta

Descripción

public MongoCursor MongoCursor::timeout ( int $ms )

Se puede establecer un tiempo de espera en cualquier momento y afectará a consultas subsiguientes del cursor, incluyendo la obtención de más resultados desde la base de datos. Por ejemplo, para esperar por siempre a una respuesta inicial pero que expire tras 100 ms para los resultados siguiente, se podría hacer esto:

<?php

$cursor 
$collection->find();

// $cursor->hasNext() ejecuta la consulta. No se ha establecido tiempo de espera, por lo
// que el programa esperará lo que sea necesario a una respuesta.

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

    
// ahora se ha establecido el tiempo de espera, por lo que si el cursor necesita obtener más
    // resultados de la base de datos, solo esperará 100 ms a la réplica de la base de datos

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

?>

Un tiempo de espera de 0 (o un número negativo) esperará por siempre por lo que se puede usar para reiniciar un cursor si ya no es necesario un tiempo de espera.

Parámetros

ms

El número de milisegundos que ha de esperar el cursor a una respuesta. Por omisión, el cursor esperará por siempre.

Valores devueltos

Este cursor.

Ejemplos

Ejemplo #1 Ejemplo de MongoCursor::timeout()

Una consulta donde el cursor espera una respuesta durante un segundo.

<?php

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

try {
  foreach (
$cursor as $valor) {
    
print_r($valor);
  }
}
catch(
MongoCursorTimeoutException $e) {
  echo 
"¡La consulta tomódemasiado tiempo!";
}

?>

Errores/Excepciones

Hace que los método que obtienen resultados lancen MongoCursorTimeoutExceptions si la consulta toma más tiempo de los milisegundos especificados.


MongoCursor
PHP Manual