Exemples
Exemples
PHP Manual

## Utilisation simple

Exemple #1 Client et agen Gearman simple

Cet exemple montre un client et un agent simple. Le client envoie une chaîne de caractères au serveur de travaux, et l'agent inverse la chaîne de caractères et la retourne. Le travail est exécuté de façon synchronisée.

`<?php
# Crée un nouveau client.
$gmclient= new GearmanClient();
# Ajoute un serveur par défaut (localhost).
$gmclient->addServer();
echo "Envoie du travail\n";
# Envoie le travail d'inversion
do
{
$result = $gmclient->do("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 "Code retourné : " . $gmclient->returnCode() . "\n";
exit;
}
}
while($gmclient->returnCode() != GEARMAN_SUCCESS);
?>`
`<?php
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. Modifie la fonction
# de l'agent en "reverse_fn_fast" pour en améliorer la rapidité avec aucun affichage.
$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 simplement le fonctionnement
for ($x= 0; $x < $workload_size; $x++)
{
echo "Envoie du statut : " . ($x + 1) . "/$workload_size complete\n";
$job->sendStatus($x, $workload_size);
sleep(1);
}
$result= strrev($workload);
echo "Résultat : $result\n";
# On retourne ce que l'on veut au client.
return $result;
}
# Une version plus simple et moins verbeuse de la fonction ci-dessus pourrait être :
function reverse_fn_fast($job)
{
return strrev($job->workload());
}
?>`

L'exemple ci-dessus va afficher quelque chose de similaire à :

    % php reverse_worker.php
    Début
    Attente d'un travail...
    Travail reçu : H:foo.local:36
    Charge de l'agent : Hello! (6)
    Envoie du statut : 1/6 complete
    Envoie du statut : 2/6 complete
    Envoie du statut : 3/6 complete
    Envoie du statut : 4/6 complete
    Envoie du statut : 5/6 complete
    Envoie du statut : 6/6 complete
    Résultat : !olleH

    % php reverse_client.php
    Début
    Envoie du travail
    Statut : 1/6 complete
    Statut : 2/6 complete
    Statut : 3/6 complete
    Statut : 4/6 complete
    Statut : 5/6 complete
    Statut : 6/6 complete
    Succès : !olleH

Exemples
Exemples
PHP Manual