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 à 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.
Liste de paramètres
-
ms
-
Le nombre de millisecondes que le curseur doit attente une réponse. Pour attendre indéfiniement, utilisez la valeur -1. Par défaut, le curseur attendra MongoCursor::$timeout millisecondes.
Valeurs de retour
Ce curseur.
Erreurs / Exceptions
Si la requête prend plus de temps que le nombre de millisecondes spécifié, une exception de type MongoCursorTimeoutException sera émise.
Exemples
Exemple #1 Exemple avec MongoCursor::timeout()
<?php
$cursor = $collection->find();
$cursor->timeout(-1);
/* $cursor->hasNext() exécute la requête. Un délai d'attente infini a été défini, aussi
* le driver va attendre autant de temps que nécessaire la réponse.
*/
while ($cursor->hasNext()) {
$cursor->timeout(100);
/* Un délai d'attente maximal a maintenant été défini, aussi, si le curseur
* doit récupérer plus de résultats depuis la base de données, il n'attendra
* la réponse que pendant 100ms.
*/
try {
print_r($cursor->getNext());
} catch (MongoCursorTimeoutException $e) {
echo "La requête prend trop longtemps !";
}
}
?>
Notes
Ce comportement ne permet pas d'annuler une opération trop longue au niveau du serveur MongoDB ; il ne va qu'informer le driver d'arrêter d'attendre une réponse, et lancer une exception MongoCursorTimeoutException après la durée définie.