GearmanClient::do
(PECL gearman >= 0.5.0)
GearmanClient::do — Exécute une seule tâche et retourne le résultat (obsolète)
Description
public string GearmanClient::do
( string
$function_name
, string $workload
[, string $unique
] )La méthode GearmanClient::do() est obsolète depuis pecl/gearman 1.0.0. Utilisez la méthode GearmanClient::doNormal() à la place.
Liste de paramètres
-
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
Valeurs de retour
Une représentation sous forme de chaîne de caractères du résultat de l'exécution de la tâche.
Exemples
Exemple #1 Soumission d'une seule tâche avec un retour immédiat
- <?php
- # Code du client
- echo "Début\n";
- # Crée un client.
- $gmclient= new GearmanClient();
- # Ajoute un serveur par défaut (localhost).
- $gmclient->addServer();
- echo "Envoi d'un travail\n";
- $result = $gmclient->doNormal("reverse", "Hello!");
- echo "Succès : $result\n";
- ?>
- <?php
- echo "Début\n";
- # Crée un agent.
- $gmworker= new GearmanWorker();
- # Ajoute un serveur par défaut (localhost).
- $gmworker->addServer();
- # Enregistre la fonction "reverse" avec le serveur. Modifie la fonction en
- # "reverse_fn_fast" pour une exécution plus rapide sans affiche.
- $gmworker->addFunction("reverse", "reverse_fn");
- print "Attente d'un travail...\n";
- while($gmworker->work())
- {
- if ($gmworker->returnCode() != GEARMAN_SUCCESS)
- {
- echo "return_code: " . $gmworker->returnCode() . "\n";
- break;
- }
- }
- function reverse_fn($job)
- {
- return strrev($job->workload());
- }
- ?>
- <?php
- # Code du client
- # Crée un client.
- $gmclient= new GearmanClient();
- # Ajoute un serveur par défaut (localhost).
- $gmclient->addServer();
- echo "Envoi d'un travail\n";
- # Envoi du travail
- do
- {
- $result = $gmclient->doNormal("reverse", "Hello!");
- # Vérifie les paquets et les erreurs retournés.
- switch($gmclient->returnCode())
- {
- case GEARMAN_WORK_DATA:
- echo "Données : $result\n";
- break;
- case GEARMAN_WORK_STATUS:
- list($numerator, $denominator)= $gmclient->doStatus();
- echo "Statut : $numerator/$denominator complete\n";
- break;
- case GEARMAN_WORK_FAIL:
- echo "Échec\n";
- exit;
- case GEARMAN_SUCCESS:
- break;
- default:
- echo "RET : " . $gmclient->returnCode() . "\n";
- echo "Erreur : " . $gmclient->error() . "\n";
- echo "N° de l'erreur : " . $gmclient->getErrno() . "\n";
- exit;
- }
- }
- while($gmclient->returnCode() != GEARMAN_SUCCESS);
- echo "Succès : $result\n";
- ?>
- <?php
- # Code de l'agent
- echo "Début\n";
- # Crée un nouvel agent.
- $gmworker= new GearmanWorker();
- # Ajoute un serveur par défaut (localhost).
- $gmworker->addServer();
- # Enregistre la fonction "reverse" avec le serveur.
- $gmworker->addFunction("reverse", "reverse_fn");
- print "Attente d'un travail...\n";
- while($gmworker->work())
- {
- if ($gmworker->returnCode() != GEARMAN_SUCCESS)
- {
- echo "return_code: " . $gmworker->returnCode() . "\n";
- break;
- }
- }
- function reverse_fn($job)
- {
- echo "Travail reçu : " . $job->handle() . "\n";
- $workload = $job->workload();
- $workload_size = $job->workloadSize();
- echo "Charge de l'agent: $workload ($workload_size)\n";
- # Cette boucle n'est pas nécessaire, mais montre le fonctionnement
- for ($x= 0; $x < $workload_size; $x++)
- {
- echo "Envoi du statut : " + $x + 1 . "/$workload_size complete\n";
- $job->sendStatus($x+1, $workload_size);
- $job->sendData(substr($workload, $x, 1));
- sleep(1);
- }
- $result= strrev($workload);
- echo "Résultat : $result\n";
- # Nous retournons ce que l'on souhaite au client.
- return $result;
- }
- ?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
L'agent affiche :
Début Attente d'un travail... Travail reçu : H:foo.local:106 Charge de l'agent : Hello! (6) 1/6 complete 2/6 complete 3/6 complete 4/6 complete 5/6 complete 6/6 complete Résultat : !olleH
Le client affiche :
Début Envoi d'un travail Statut : 1/6 complete Données : H Statut : 2/6 complete Données : e Statut : 3/6 complete Données : l Statut : 4/6 complete Données : l Statut : 5/6 complete Données : o Statut : 6/6 complete Données : ! Succès : !olleH
Voir aussi
- GearmanClient::doHigh() - Exécute une seule tâche en priorité haute
- GearmanClient::doLow() - Exécute une seule tâche en priorité basse
- GearmanClient::doBackground() - Exécute une tâche en arrière-plan
- GearmanClient::doHighBackground() - Exécute une tâche en priorité haute en arrière plan
- GearmanClient::doLowBackground() - Exécute une tâche en priorité basse en arrière-plan