MongoCursor::timeout
(PECL mongo >=1.0.3)
MongoCursor::timeout — Establece un tiempo de espera en el lado del cliente para esta consulta
Descripción
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.
Parámetros
-
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á 30000 milisegundos (30 segundos).
Valores devueltos
Este cursor.
Errores/Excepciones
Hace que los métodos que obtienen resultados lancen una MongoCursorTimeoutException si la consulta toma más tiempo de los milisegundos especificados.
Ejemplos
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!";
}
}
?>
Notas
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. Si fuera necesario especificar un tiempo límite para una consulta, se puede considerar el uso de MongoCursor::maxTimeMS().
Ver también
- La opción socketTimeoutMS de MongoClient::__construct()