(PECL gearman >= 0.5.0)
GearmanClient::addTaskHigh — Ajoute une tâche de forte priorité à effectuer en parallèle
$function_name
, string $workload
[, mixed &$context
[, string $unique
]] )Ajoute une tâche de forte priorité à effectuer en parallèle d'autres tâches. Appelez cette méthode pour que toutes les tâches soient menées de front, puis appelez GearmanClient::runTasks() pour faire le travail. Les tâches avec une forte priorité seront sélectionnée dans la queue avant celle de priorité plus faible.
function_name
Une fonction enregistrée que le travailleur va exécuter
workload
Données linéarisées à analyser
context
Contexte de l'application à associer avec une tâche
unique
Un identifiant unique utilisé pour identifier une tâche particulière
Un objet GearmanTask ou FALSE
si la tâche ne peut pas être ajoutée.
Exemple #1 Une tâche de forte priorité en même temps que deux tâches normales
Une tâche de forte priorité est ajoutée en plus de deux autres tâches. Un seul agent est disponible, de telle façon que les tâches s'exécutent une à une, avec celle de forte priorité en premier.
<?php
# crée le client Gearman
$gmc= new GearmanClient();
# ajoute le serveur par défaut
$gmc->addServer();
# fixe le retour quand la tâche est complétée
$gmc->setCompleteCallback("inverse_complete");
# ajoute des tâches, l'une ayant une forte priorité
$task= $gmc->addTask("inverse", "Bonjour le monde!", null, "1");
$task= $gmc->addTaskHigh("inverse", "!ednom el ruojnoB", null, "2");
$task= $gmc->addTask("inverse", "Bonjour le monde!", null, "3");
if (! $gmc->runTasks())
{
echo "ERROR " . $gmc->error() . "\n";
exit;
}
echo "Fait\n";
function inverse_complete($task)
{
echo "Complétée : " . $task->unique() . ", " . $task->data() . "\n";
}
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
Complétée : 2, Bonjour le monde! Complétée : 3, !ednom el ruojnoB Complétée : 1, !ednom el ruojnoB Fait