GearmanClient::addTask
(PECL gearman >= 0.5.0)
GearmanClient::addTask — Ajoute une tâche à exécuter en parallèle
Description
$function_name
, string $workload
[, mixed &$context
[, string $unique
]] ) : GearmanTaskAjoute une tâche à exécuter en parallèle d'autres tâches. Appelez cette méthode pour toutes les tâches à exécuter en parallèle, puis, appelez la méthode GearmanClient::runTasks() pour exécuter les tâches. Notez qu'il est nécessaire d'avoir assez d'agents disponibles pour exécuter en parallèle toutes les tâches.
Liste de paramètres
-
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
Exemples
Exemple #1 Ajout de 2 tâches
<?php
# Crée un client gearman
$gmclient= new GearmanClient();
# Ajoute le serveur de travaux par défaut
$gmclient->addServer();
# Défini une fonction à appeler lorsque le travail est terminé
$gmclient->setCompleteCallback("complete");
# Ajoute une tâche exécutant la fonction "reverse" sur la chaîne "Hello World!"
$gmclient->addTask("reverse", "Hello World!", null, "1");
# Ajoute une autre tâche exécutant la fonction "reverse" sur la chaîne "!dlroW olleH"
$gmclient->addTask("reverse", "!dlroW olleH", null, "2");
# Exécute les tâches
$gmclient->runTasks();
function complete($task)
{
print "Terminé : " . $task->unique() . ", " . $task->data() . "\n";
}
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
Terminé : 2, Hello World! Terminé : 1, !dlroW olleH
Exemple #2 Ajout de 2 tâches en passant le contexte de l'application
<?php
$client = new GearmanClient();
$client->addServer();
# Défini une fonction à appeler lorsque le travail est terminé
$client->setCompleteCallback("reverse_complete");
# Ajout de quelques tâches contenant un marqueur à l'emplacement duquel le résultat doit être placé
$results = array();
$client->addTask("reverse", "Hello World!", &$results, "t1");
$client->addTask("reverse", "!dlroW olleH", &$results, "t2");
$client->runTasks();
# Le résultat doit être maintenant contenu dans les fonctions de rappel
foreach ($results as $id => $result)
echo $id . ": " . $result['handle'] . ", " . $result['data'] . "\n";
function reverse_complete($task, $results)
{
$results[$task->unique()] = array("handle"=>$task->jobHandle(), "data"=>$task->data());
}
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
t2: H.foo:21, Hello World! t1: H:foo:22, !dlroW olleH
Voir aussi
- GearmanClient::addTaskHigh() - Ajoute une tâche de forte priorité à effectuer en parallèle
- GearmanClient::addTaskLow() - Ajoute une tâche de faible priorité à effectuer en parallèle
- GearmanClient::addTaskBackground() - Ajoute une tâche d'arrière-plan pour une exécution en parallèle
- GearmanClient::addTaskHighBackground() - Ajoute une tâche de fond de forte priorité à effectuer en parallèle
- GearmanClient::addTaskLowBackground() - Ajoute une tâche de fond de faible priorité à effectuer en parallèle
- GearmanClient::runTasks() - Exécute une liste de tâches en parallèle
Version en cache
23/12/2024 14:20:41 Cette version de la page est en cache (à la date du 23/12/2024 14:20:41) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-gearmanclient.addtask.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.