(PECL gearman >= 0.5.0)
GearmanClient::addTaskStatus — Ajoute une tâche pour obtenir le statut
Utilisé pour demander le statut au serveur Gearman, qui appellera le retour de statut spécifié (grâce à GearmanClient::setStatusCallback()).
job_handle
Les descripteur pour la tâche dont on souhaite le statut
context
Les données à passer au retour de statut, généralement une référence à un tableau ou à un objet
Un objet GearmanTask ou false
en cas d'échec.
Exemple #1 Surveiller l'accomplissement de plusieurs tâches de fond
Un délai artificiel est introduit dans l'agent de cet exemple pour simuler un processus long. Il n'y a qu'un agent qui est lancé dans cet exemple.
<?php
/* crée notre objet */
$gmclient= new GearmanClient();
/* ajoute le serveur par défaut */
$gmclient->addServer();
/* lance une tâche de fond et sauvegarde les descripteurs */
$handles = array();
$handles[0] = $gmclient->doBackground("inverse", "Bonjour le monde!");
$handles[1] = $gmclient->doBackground("inverse", "!ednom el ruojnoB");
$gmclient->setStatusCallback("inverse_statut");
/* Interroge le serveur pour voir quand les tâches de fond se terminent; */
/* une meilleure méthode consiste à appeler les retours d'événement */
do
{
/* Utilise la variable de contexte pour savoir combien de tâches ont été effectuées */
$done = 0;
$gmclient->addTaskStatus($handles[0], &$done);
$gmclient->addTaskStatus($handles[1], &$done);
$gmclient->runTasks();
echo "Fait : $done\n";
sleep(1);
}
while ($done != 2);
function inverse_statut($task, $done)
{
if (!$task->isKnown())
$done++;
}
?>
Résultat de l'exemple ci-dessus est similaire à :
Fait : 0 Fait : 0 Fait : 0 Fait : 0 Fait : 0 Fait : 0 Fait : 0 Fait : 0 Fait : 0 Fait : 0 Fait : 0 Fait : 0 Fait : 1 Fait : 1 Fait : 1 Fait : 1 Fait : 1 Fait : 1 Fait : 1 Fait : 1 Fait : 1 Fait : 1 Fait : 1 Fait : 1 Fait : 2