Files
doc-fr/reference/gearman/gearmanclient/addtask.xml
2022-04-06 12:58:32 +01:00

199 lines
5.5 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 73fae4ee51b644b72028e610abefefced57c18ad Maintainer: yannick Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="gearmanclient.addtask" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>GearmanClient::addTask</refname>
<refpurpose>Ajoute une tâche à exécuter en parallèle</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>GearmanTask</type><methodname>GearmanClient::addTask</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 à 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 <methodname>GearmanClient::runTasks</methodname> 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.
</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 l tâche n'a pu être ajoutée.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Ajout de 2 tâches</title>
<programlisting role="php">
<![CDATA[
<?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";
}
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
Terminé : 2, Hello World!
Terminé : 1, !dlroW olleH
]]>
</screen>
</example>
<example>
<title>Ajout de 2 tâches en passant le contexte de l'application</title>
<programlisting role="php">
<![CDATA[
<?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());
}
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
t2: H.foo:21, Hello World!
t1: H:foo:22, !dlroW olleH
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><methodname>GearmanClient::addTaskHigh</methodname></member>
<member><methodname>GearmanClient::addTaskLow</methodname></member>
<member><methodname>GearmanClient::addTaskBackground</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
-->