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.