(PECL mongo >=1.0.3)
MongoCursor::timeout — Définit un délai maximum d'attente côté client pour cette requête
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.
ms
Le nombre de millisecondes que le curseur doit attente une réponse. Par défaut, le curseur attendra indéfiniment.
Ce curseur.
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 !";
}
?>
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.