(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. 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.
ms
El número de milisegundos que ha de esperar el cursor a una respuesta. Por omisión, el cursor esperará por siempre.
Este cursor.
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!";
}
?>
Hace que los método que obtienen resultados lancen MongoCursorTimeoutExceptions si la consulta toma más tiempo de los milisegundos especificados.