MongoCursor
PHP Manual

MongoCursor::timeout

(PECL mongo >=1.0.3)

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

Description

public MongoCursor MongoCursor::timeout ( int $ms )

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.

Liste de paramètres

ms

Le nombre de millisecondes que le curseur doit attente une réponse. Par défaut, le curseur attendra indéfiniment.

Valeurs de retour

Ce curseur.

Exemples

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 !";
}

?>

Erreurs / Exceptions

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.


MongoCursor
PHP Manual