MongoCursor::timeout
(PECL mongo >=1.0.3)
MongoCursor::timeout — Défini 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 30000 millisecondes (30 secondes).
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()
Dans l'exemple suivant, le driver va attendre indéfiniement la réponse initiale de la base de données, puis, va attendre 100ms pour les réponses suivantes.
<?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. Si vous devez spécifier un délai maximal d'attente côté serveur pour une requête, veuillez utiliser la méthode MongoCursor::maxTimeMS().
Voir aussi
- MongoCursorInterface::timeout() - Définit un délai maximal d'attente côté client pour cette requête
- L'option socketTimeoutMS pour MongoClient::__construct()
Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-mongocursor.timeout.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.