Rechercher une fonction PHP

Utilisation simple

Exemple #1 Client et agent 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->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:
      echo 
"Succès: $result\n"
      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 ($x0$x $workload_size$x++)
  {
    echo 
"Envoie du statut : " . ($x 1) . "/$workload_size complete\n";
    
$job->sendStatus($x$workload_size);
    
sleep(1);
  }

  
$resultstrrev($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

Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-gearman.examples-reverse.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

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

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.

Table des matières Haut