PHP Velho Oeste 2024

MongoCursor::timeout

(PECL mongo >=1.0.3)

MongoCursor::timeoutDéfini un délai maximum d'attente côté client pour cette requête

Description

public MongoCursor::timeout ( int $ms ) : MongoCursor

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).

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()

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

Avertissement

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

add a note add a note

User Contributed Notes 1 note

up
2
Robert Ross
13 years ago
To set timeouts for all queries, do this:

MongoCursor::$timeout = -1 (-1 is no timeout)
To Top