mirror of
https://github.com/macintoshplus/doc-fr.git
synced 2026-03-27 18:32:09 +01:00
These were skipped on my personal revcheck as I hadn't made a tool to generate a batch diff for files with no changes
288 lines
7.8 KiB
XML
288 lines
7.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: 4754397753fd79f1c846868b66a2448babab1c54 Maintainer: yannick Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
|
|
<refentry xml:id="gearmanclient.addtaskbackground" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<refnamediv>
|
|
<refname>GearmanClient::addTaskBackground</refname>
|
|
<refpurpose>Ajoute une tâche d'arrière-plan pour une exécution en parallèle</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsect1 role="description">
|
|
&reftitle.description;
|
|
<methodsynopsis>
|
|
<modifier>public</modifier> <type>GearmanTask</type><methodname>GearmanClient::addTaskBackground</methodname>
|
|
<methodparam><type>string</type><parameter>function_name</parameter></methodparam>
|
|
<methodparam><type>string</type><parameter>workload</parameter></methodparam>
|
|
<methodparam choice="opt"><type>mixed</type><parameter role="reference">context</parameter></methodparam>
|
|
<methodparam choice="opt"><type>string</type><parameter>unique</parameter></methodparam>
|
|
</methodsynopsis>
|
|
<para>
|
|
Ajoute une tâche d'arrière-plan pour une exécution 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 <methodname>GearmanClient::runTasks</methodname> pour réaliser les tâches.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="parameters">
|
|
&reftitle.parameters;
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><parameter>function_name</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
&gearman.parameter.functionname;
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>workload</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
&gearman.parameter.workload;
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>context</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
&gearman.parameter.context;
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>unique</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
&gearman.parameter.unique;
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="returnvalues">
|
|
&reftitle.returnvalues;
|
|
<para>
|
|
Un objet <classname>GearmanTask</classname> ou &false; si la tâche
|
|
n'a pu être ajoutée.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="examples">
|
|
&reftitle.examples;
|
|
<para>
|
|
<example>
|
|
<title>2 tâches dont une en arrière-plan</title>
|
|
<para>
|
|
Cet exemple montre la différence entre l'exécution en arrière-plan
|
|
et une exécution normale. Le client ajoute 2 tâches qui doivent exécuter
|
|
la même fonction, mais une a été ajoutée avec la méthode
|
|
<methodname>addTaskBackground</methodname>. Une fonction de rappel est définie
|
|
afin de surveiller la progression du travail. Un agent simple avec un délai artificiel
|
|
rapporte la progression et le client la traite via la fonction de rappel.
|
|
2 agents sont exécutés dans cet exemple. Notez que la tâche en arrière-plan
|
|
n'est pas affichée par le client.
|
|
</para>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
# Le script client
|
|
|
|
# Crée un client Gearman
|
|
$gmc= new GearmanClient();
|
|
|
|
# Ajoute un serveur de travaux par défaut
|
|
$gmc->addServer();
|
|
|
|
# Définit 2 fonctions de rappel afin de surveiller la progression
|
|
$gmc->setCompleteCallback("reverse_complete");
|
|
$gmc->setStatusCallback("reverse_status");
|
|
|
|
# Ajoute une tâche pour la fonction "reverse"
|
|
$task= $gmc->addTask("reverse", "Hello World!", null, "1");
|
|
|
|
# Ajoute une autre tâche, mais cette fois, en arrière-plan
|
|
$task= $gmc->addTaskBackground("reverse", "!dlroW olleH", null, "2");
|
|
|
|
if (! $gmc->runTasks())
|
|
{
|
|
echo "ERREUR " . $gmc->error() . "\n";
|
|
exit;
|
|
}
|
|
|
|
echo "FAIT\n";
|
|
|
|
function reverse_status($task)
|
|
{
|
|
echo "STATUT : " . $task->unique() . ", " . $task->jobHandle() . " - " . $task->taskNumerator() .
|
|
"/" . $task->taskDenominator() . "\n";
|
|
}
|
|
|
|
function reverse_complete($task)
|
|
{
|
|
echo "TERMINÉ : " . $task->unique() . ", " . $task->data() . "\n";
|
|
}
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
# Le script de l'agent
|
|
|
|
echo "Début\n";
|
|
|
|
# Crée un agent.
|
|
$gmworker= new GearmanWorker();
|
|
|
|
# Ajoute un serveur par défaut (localhost).
|
|
$gmworker->addServer();
|
|
|
|
# Enregistre la fonction "reverse" sur ce 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 permet de comprendre 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";
|
|
|
|
# On retourne au client ce que l'on veut.
|
|
return $result;
|
|
}
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
L'agent affiche, pour les 2 travaux :
|
|
</para>
|
|
<screen>
|
|
<![CDATA[
|
|
Travail reçu : H:foo.local:65
|
|
Charge de l'agent : !dlroW olleH (12)
|
|
1/12 complete
|
|
Travail reçu : H:foo.local:66
|
|
Charge de l'agent : Hello World! (12)
|
|
Envoi du statut : 1/12 complete
|
|
Envoi du statut : 2/12 complete
|
|
Envoi du statut : 2/12 complete
|
|
Envoi du statut : 3/12 complete
|
|
Envoi du statut : 3/12 complete
|
|
Envoi du statut : 4/12 complete
|
|
Envoi du statut : 4/12 complete
|
|
Envoi du statut : 5/12 complete
|
|
Envoi du statut : 5/12 complete
|
|
Envoi du statut : 6/12 complete
|
|
Envoi du statut : 6/12 complete
|
|
Envoi du statut : 7/12 complete
|
|
Envoi du statut : 7/12 complete
|
|
Envoi du statut : 8/12 complete
|
|
Envoi du statut : 8/12 complete
|
|
Envoi du statut : 9/12 complete
|
|
Envoi du statut : 9/12 complete
|
|
Envoi du statut : 10/12 complete
|
|
Envoi du statut : 10/12 complete
|
|
Envoi du statut : 11/12 complete
|
|
Envoi du statut : 11/12 complete
|
|
Envoi du statut : 12/12 complete
|
|
Envoi du statut : 12/12 complete
|
|
Résultat : !dlroW olleH
|
|
Résultat : Hello World!
|
|
]]>
|
|
</screen>
|
|
<para>
|
|
Affichage du client :
|
|
</para>
|
|
<screen>
|
|
<![CDATA[
|
|
STATUT : 1, H:foo.local:66 - 1/12
|
|
STATUT : 1, H:foo.local:66 - 2/12
|
|
STATUT : 1, H:foo.local:66 - 3/12
|
|
STATUT : 1, H:foo.local:66 - 4/12
|
|
STATUT : 1, H:foo.local:66 - 5/12
|
|
STATUT : 1, H:foo.local:66 - 6/12
|
|
STATUT : 1, H:foo.local:66 - 7/12
|
|
STATUT : 1, H:foo.local:66 - 8/12
|
|
STATUT : 1, H:foo.local:66 - 9/12
|
|
STATUT : 1, H:foo.local:66 - 10/12
|
|
STATUT : 1, H:foo.local:66 - 11/12
|
|
STATUT : 1, H:foo.local:66 - 12/12
|
|
TERMINÉ : 1, !dlroW olleH
|
|
FAIT
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="seealso">
|
|
&reftitle.seealso;
|
|
<para>
|
|
<simplelist>
|
|
<member><methodname>GearmanClient::addTask</methodname></member>
|
|
<member><methodname>GearmanClient::addTaskHigh</methodname></member>
|
|
<member><methodname>GearmanClient::addTaskLow</methodname></member>
|
|
<member><methodname>GearmanClient::addTaskHighBackground</methodname></member>
|
|
<member><methodname>GearmanClient::addTaskLowBackground</methodname></member>
|
|
<member><methodname>GearmanClient::runTasks</methodname></member>
|
|
</simplelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
</refentry>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|