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::timeout ( int $ms ) : MongoCursor

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

Advertencia

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