(PECL gearman >= 0.5.0)
GearmanClient::doBackground — Exécute une tâche en arrière-plan
$function_name
, string $workload
[, string $unique
] )Exécute une tâche en arrière-plan, retourne le gestionnaire de travaux qui pourra être utilisé pour récupérer le statut de la tâche en cours.
function_name
Une fonction enregistrée que le travailleur va exécuter
workload
Données linéarisées à analyser
unique
Un identifiant unique utilisé pour identifier une tâche particulière
Le gestionnaire de travaux pour la tâche soumise.
Exemple #1 Soumet et surveille un travail en arrière-plan
L'agent de cet exemple a un délai artificiel introduit pour simuler un travail dont l'exécution prend beaucoup de temps. Le script du client vérifie périodiquement le statut du travail en cours.
<?php
/* Crée un client */
$gmclient= new GearmanClient();
/* Ajoute un serveur par défaut */
$gmclient->addServer();
/* Exécute le client */
$job_handle = $gmclient->doBackground("reverse", "this is a test");
if ($gmclient->returnCode() != GEARMAN_SUCCESS)
{
echo "Code retour erroné\n";
exit;
}
$done = false;
do
{
sleep(3);
$stat = $gmclient->jobStatus($job_handle);
if (!$stat[0]) // the job is known so it is not done
$done = true;
echo "Exécution : " . ($stat[1] ? "true" : "false") . ", numérateur : " . $stat[2] . ", dénominateur : " . $stat[3] . "\n";
}
while(!$done);
echo "fait !\n";
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
Exécution : true, numérateur : 3, dénominateur : 14 Exécution : true, numérateur : 6, dénominateur : 14 Exécution : true, numérateur : 9, dénominateur : 14 Exécution : true, numérateur : 12, dénominateur : 14 Exécution : false, numérateur : 0, dénominateur : 0 fait !