GearmanWorker::wait
(PECL gearman >= 0.6.0)
GearmanWorker::wait — Attente une activité d'un ou plusieurs serveurs de travaux
Description
public bool GearmanWorker::wait
( void
)
Met à attente l'agent d'une activité d'un ou plusieurs serveurs de travaux lors
d'un fonctionnement en mode I/O non bloquant. En cas d'échec, une alerte de niveau
E_WARNING
sera émise avec le contenu de la dernière erreur Gearman
survenue.
Liste de paramètres
Cette fonction ne contient aucun paramètre.
Valeurs de retour
Cette fonction retourne TRUE
en cas de
succès ou FALSE
si une erreur survient.
Exemples
Exemple #1 Exécution d'un agent en mode non bloquant
<?php echo "Début\n"; # Crée un nouvel agent $worker= new GearmanWorker(); # Rend l'agent non bloquant $worker->addOptions(GEARMAN_WORKER_NON_BLOCKING); # Ajoute un serveur par défaut (localhost, port 4730) $worker->addServer(); # Ajoute une fonction "reverse" $worker->addFunction('reverse', 'reverse_fn'); # Tente de récupérer un travail while (@$worker->work() || $worker->returnCode() == GEARMAN_IO_WAIT || $worker->returnCode() == GEARMAN_NO_JOBS) { if ($worker->returnCode() == GEARMAN_SUCCESS) continue; echo "Attente du premier travail...\n"; if (!@$worker->wait()) { if ($worker->returnCode() == GEARMAN_NO_ACTIVE_FDS) { # Nous ne sommes connectés à aucun serveur ; nous attendons donc un peu # avant de tenter une reconnexion. sleep(5); continue; } break; } } echo "Erreur de l'agent : " . $worker->error() . "\n"; function reverse_fn($job) { return strrev($job->workload()); } ?>