(PECL mongo >=1.0.3)
MongoCursor::timeout — Establece un tiempo de espera en el lado del cliente para esta consulta
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.
ms
El número de milisegundos que ha de esperar el cursor a una respuesta. Use -1 para esperar eternamente. Por omisión, el cursor esperará MongoCursor::$timeout milisegundos.
Este cursor.
Hace que los métodos que obtienen resultados lancen una MongoCursorTimeoutException si la consulta toma más tiempo de los milisegundos especificados.
Ejemplo #1 Ejemplo de MongoCursor::timeout()
En el siguiente ejemplo, el controlador esperará a una respuesta inicial de la base de datos, y luego esperará 100 ms para las respuestas subsiguientes.
<?php
$cursor = $collection->find();
$cursor->timeout(-1);
/* $cursor->hasNext() ejecuta la consulta. Se ha establecido un tiempo de espera
* infinito, por lo que el controlador esperará lo 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 una respuesta.
*/
try {
print_r($cursor->getNext());
} catch (MongoCursorTimeoutException $e) {
echo "¡La consulta tomó demasiado tiempo!";
}
}
?>
Esto no hace que el servidor de MongoDB cancele las operaciones que se ejecuten durante mucho tiempo; solamente instruye al controlador para que deje de esperar a una respuesta y lance una MongoCursorTimeoutException después de un tiempo establecido.