To set timeouts for all queries, do this:
MongoCursor::$timeout = -1 (-1 is no timeout)
MongoCursor::timeout
(PECL mongo >=1.0.3)
MongoCursor::timeout — Définit un délai maximum d'attente côté client pour cette requête
Description
Un délai maximum d'attente peut être défini a n'importe quel moment, et affectera les requêtes suivantes du curseur, incluant la récupération de plus de résultats depuis la base de données. Par exemple, pour attendre sans limite de temps pour une réponse initiale mais placer un délai maximum d'attente de 100 ms pour un autre résultat, vous pouvez faire ceci :
<?php
$cursor = $collection->find();
// $cursor->hasNext() exécute la requête. Aucun délai d'attente n'a été défini, aussi
// le programme attendra la réponse aussi longtemps que nécessaire.
while ($cursor->hasNext()) {
$cursor->timeout(100);
// maintenant qu'un délai a été défini, et si le curseur doit récupérer d'autres résultats
// depuis la base de données, le programme attendra seulement 100 ms la réponse de la base de données
try {
print_r($cursor->getNext());
}
catch(MongoCursorTimeoutException $e) {
echo "La requête a pris trop de temps !";
}
}
?>
Un délai de 0 (ou un nombre négatif) permet d'annuler tout délai précédemment défini.
Liste de paramètres
-
ms -
Le nombre de millisecondes que le curseur doit attente une réponse. Par défaut, le curseur attendra indéfiniment.
Valeurs de retour
Ce curseur.
Exemples
Exemple #1 Exemple avec MongoCursor::timeout()
Une requête dont le curseur attente une seconde la réponse.
<?php
$cursor = $collection->find()->timeout(1000);
try {
foreach ($cursor as $value) {
print_r($value);
}
}
catch(MongoCursorTimeoutException $e) {
echo "La requête a pris trop de temps !";
}
?>
Erreurs / Exceptions
Cette méthode fait que les méthodes récupérant des résultats émettent une exception MongoCursorTimeoutException si leurs requêtes dépassent le délai défini lors de leurs exécutions.
