<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.gearmanclient.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'gearmanclient.addtaskbackground.php',
    1 => 'GearmanClient::addTaskBackground',
    2 => 'Ajoute une t&acirc;che d\'arri&egrave;re-plan pour une ex&eacute;cution en parall&egrave;le',
  ),
  'up' => 
  array (
    0 => 'class.gearmanclient.php',
    1 => 'GearmanClient',
  ),
  'prev' => 
  array (
    0 => 'gearmanclient.addtask.php',
    1 => 'GearmanClient::addTask',
  ),
  'next' => 
  array (
    0 => 'gearmanclient.addtaskhigh.php',
    1 => 'GearmanClient::addTaskHigh',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/gearman/gearmanclient/addtaskbackground.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="gearmanclient.addtaskbackground" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">GearmanClient::addTaskBackground</h1>
  <p class="verinfo">(PECL gearman &gt;= 0.5.0)</p><p class="refpurpose"><span class="refname">GearmanClient::addTaskBackground</span> &mdash; <span class="dc-title">Ajoute une tâche d&#039;arrière-plan pour une exécution en parallèle</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-gearmanclient.addtaskbackground-description">
  <h3 class="title">Description</h3>
  <div class="methodsynopsis dc-description">
   <span class="modifier">public</span> <span class="methodname"><strong>GearmanClient::addTaskBackground</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$function_name</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><span class="type"><a href="language.types.string.php" class="type string">string</a></span>|<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>|<span class="type"><a href="language.types.float.php" class="type float">float</a></span></span> <code class="parameter">$workload</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">$context</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.string.php" class="type string">string</a></span></span> <code class="parameter">$unique_key</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span><br>): <span class="type"><span class="type"><a href="class.gearmantask.php" class="type GearmanTask">GearmanTask</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="simpara">
   Ajoute une tâche d&#039;arrière-plan pour une exécution en parallèle d&#039;autres tâches.
   Appelez cette méthode pour toutes les tâches à exécuter en parallèle, puis, appelez
   la méthode <span class="methodname"><a href="gearmanclient.runtasks.php" class="methodname">GearmanClient::runTasks()</a></span> pour réaliser les tâches.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-gearmanclient.addtaskbackground-parameters">
  <h3 class="title">Liste de paramètres</h3>
  <dl>
   
    <dt><code class="parameter">function_name</code></dt>
    <dd>
     <span class="simpara">
      Une fonction enregistrée que le travailleur va exécuter
     </span>
    </dd>
   
   
    <dt><code class="parameter">workload</code></dt>
    <dd>
     <span class="simpara">
      Données sérialisées à analyser
     </span>
    </dd>
   
   
    <dt><code class="parameter">context</code></dt>
    <dd>
     <span class="simpara">
      Contexte de l&#039;application à associer avec une tâche
     </span>
    </dd>
   
   
    <dt><code class="parameter">unique_key</code></dt>
    <dd>
     <span class="simpara">
      Un identifiant unique utilisé pour identifier une tâche particulière
     </span>
    </dd>
   
  </dl>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-gearmanclient.addtaskbackground-returnvalues">
  <h3 class="title">Valeurs de retour</h3>
  <p class="simpara">
   Un objet <span class="classname"><a href="class.gearmantask.php" class="classname">GearmanTask</a></span> ou <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si la tâche
   n&#039;a pu être ajoutée.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-gearmanclient.addtaskbackground-examples">
  <h3 class="title">Exemples</h3>
  <div class="example" id="example-1">
   <p><strong>Exemple #1 2 tâches dont une en arrière-plan</strong></p>
   <div class="example-contents"><p>
    Cet exemple montre la différence entre l&#039;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
    <span class="methodname"><strong>addTaskBackground()</strong></span>. 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. Il est à noter que la tâche en arrière-plan
    n&#039;est pas affichée par le client.
   </p></div>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000"># Le script client<br /><br /># Crée un client Gearman<br /></span><span style="color: #0000BB">$gmc</span><span style="color: #007700">= new </span><span style="color: #0000BB">GearmanClient</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000"># Ajoute un serveur de travaux par défaut<br /></span><span style="color: #0000BB">$gmc</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">addServer</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000"># Définit 2 fonctions de rappel afin de surveiller la progression<br /></span><span style="color: #0000BB">$gmc</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setCompleteCallback</span><span style="color: #007700">(</span><span style="color: #DD0000">"reverse_complete"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$gmc</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setStatusCallback</span><span style="color: #007700">(</span><span style="color: #DD0000">"reverse_status"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000"># Ajoute une tâche pour la fonction "reverse"<br /></span><span style="color: #0000BB">$task</span><span style="color: #007700">= </span><span style="color: #0000BB">$gmc</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">addTask</span><span style="color: #007700">(</span><span style="color: #DD0000">"reverse"</span><span style="color: #007700">, </span><span style="color: #DD0000">"Hello World!"</span><span style="color: #007700">, </span><span style="color: #0000BB">null</span><span style="color: #007700">, </span><span style="color: #DD0000">"1"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000"># Ajoute une autre tâche, mais cette fois, en arrière-plan<br /></span><span style="color: #0000BB">$task</span><span style="color: #007700">= </span><span style="color: #0000BB">$gmc</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">addTaskBackground</span><span style="color: #007700">(</span><span style="color: #DD0000">"reverse"</span><span style="color: #007700">, </span><span style="color: #DD0000">"!dlroW olleH"</span><span style="color: #007700">, </span><span style="color: #0000BB">null</span><span style="color: #007700">, </span><span style="color: #DD0000">"2"</span><span style="color: #007700">);<br /><br />if (! </span><span style="color: #0000BB">$gmc</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">runTasks</span><span style="color: #007700">())<br />{<br />    echo </span><span style="color: #DD0000">"ERREUR " </span><span style="color: #007700">. </span><span style="color: #0000BB">$gmc</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">error</span><span style="color: #007700">() . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />    exit;<br />}<br /><br />echo </span><span style="color: #DD0000">"FAIT\n"</span><span style="color: #007700">;<br /><br />function </span><span style="color: #0000BB">reverse_status</span><span style="color: #007700">(</span><span style="color: #0000BB">$task</span><span style="color: #007700">)<br />{<br />    echo </span><span style="color: #DD0000">"STATUT : " </span><span style="color: #007700">. </span><span style="color: #0000BB">$task</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">unique</span><span style="color: #007700">() . </span><span style="color: #DD0000">", " </span><span style="color: #007700">. </span><span style="color: #0000BB">$task</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">jobHandle</span><span style="color: #007700">() . </span><span style="color: #DD0000">" - " </span><span style="color: #007700">. </span><span style="color: #0000BB">$task</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">taskNumerator</span><span style="color: #007700">() .<br />         </span><span style="color: #DD0000">"/" </span><span style="color: #007700">. </span><span style="color: #0000BB">$task</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">taskDenominator</span><span style="color: #007700">() . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />}<br /><br />function </span><span style="color: #0000BB">reverse_complete</span><span style="color: #007700">(</span><span style="color: #0000BB">$task</span><span style="color: #007700">)<br />{<br />    echo </span><span style="color: #DD0000">"TERMINÉ : " </span><span style="color: #007700">. </span><span style="color: #0000BB">$task</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">unique</span><span style="color: #007700">() . </span><span style="color: #DD0000">", " </span><span style="color: #007700">. </span><span style="color: #0000BB">$task</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">data</span><span style="color: #007700">() . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000"># Le script de l'agent<br /><br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"Début\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000"># Crée un agent.<br /></span><span style="color: #0000BB">$gmworker</span><span style="color: #007700">= new </span><span style="color: #0000BB">GearmanWorker</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000"># Ajoute un serveur par défaut (localhost).<br /></span><span style="color: #0000BB">$gmworker</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">addServer</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000"># Enregistre la fonction "reverse" sur ce serveur.<br /></span><span style="color: #0000BB">$gmworker</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">addFunction</span><span style="color: #007700">(</span><span style="color: #DD0000">"reverse"</span><span style="color: #007700">, </span><span style="color: #DD0000">"reverse_fn"</span><span style="color: #007700">);<br /><br />print </span><span style="color: #DD0000">"Attente d'un travail...\n"</span><span style="color: #007700">;<br />while(</span><span style="color: #0000BB">$gmworker</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">work</span><span style="color: #007700">())<br />{<br />  if (</span><span style="color: #0000BB">$gmworker</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">returnCode</span><span style="color: #007700">() != </span><span style="color: #0000BB">GEARMAN_SUCCESS</span><span style="color: #007700">)<br />  {<br />    echo </span><span style="color: #DD0000">"return_code: " </span><span style="color: #007700">. </span><span style="color: #0000BB">$gmworker</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">returnCode</span><span style="color: #007700">() . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />    break;<br />  }<br />}<br /><br />function </span><span style="color: #0000BB">reverse_fn</span><span style="color: #007700">(</span><span style="color: #0000BB">$job</span><span style="color: #007700">)<br />{<br />  echo </span><span style="color: #DD0000">"Travail reçu : " </span><span style="color: #007700">. </span><span style="color: #0000BB">$job</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">handle</span><span style="color: #007700">() . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br />  </span><span style="color: #0000BB">$workload </span><span style="color: #007700">= </span><span style="color: #0000BB">$job</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">workload</span><span style="color: #007700">();<br />  </span><span style="color: #0000BB">$workload_size </span><span style="color: #007700">= </span><span style="color: #0000BB">$job</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">workloadSize</span><span style="color: #007700">();<br /><br />  echo </span><span style="color: #DD0000">"Charge de l'agent : </span><span style="color: #0000BB">$workload</span><span style="color: #DD0000"> (</span><span style="color: #0000BB">$workload_size</span><span style="color: #DD0000">)\n"</span><span style="color: #007700">;<br /><br />  </span><span style="color: #FF8000"># Cette boucle n'est pas nécessaire, mais permet de comprendre le fonctionnement<br />  </span><span style="color: #007700">for (</span><span style="color: #0000BB">$x</span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">; </span><span style="color: #0000BB">$x </span><span style="color: #007700">&lt; </span><span style="color: #0000BB">$workload_size</span><span style="color: #007700">; </span><span style="color: #0000BB">$x</span><span style="color: #007700">++)<br />  {<br />    echo </span><span style="color: #DD0000">"Envoi du statut : " </span><span style="color: #007700">. (</span><span style="color: #0000BB">$x </span><span style="color: #007700">+ </span><span style="color: #0000BB">1</span><span style="color: #007700">) . </span><span style="color: #DD0000">"/</span><span style="color: #0000BB">$workload_size</span><span style="color: #DD0000"> complete\n"</span><span style="color: #007700">;<br />    </span><span style="color: #0000BB">$job</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">sendStatus</span><span style="color: #007700">(</span><span style="color: #0000BB">$x</span><span style="color: #007700">+</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">$workload_size</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$job</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">sendData</span><span style="color: #007700">(</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$workload</span><span style="color: #007700">, </span><span style="color: #0000BB">$x</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">));<br />    </span><span style="color: #0000BB">sleep</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />  }<br /><br />  </span><span style="color: #0000BB">$result</span><span style="color: #007700">= </span><span style="color: #0000BB">strrev</span><span style="color: #007700">(</span><span style="color: #0000BB">$workload</span><span style="color: #007700">);<br />  echo </span><span style="color: #DD0000">"Résultat : </span><span style="color: #0000BB">$result</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br /><br />  </span><span style="color: #FF8000"># On retourne au client ce que l'on veut.<br />  </span><span style="color: #007700">return </span><span style="color: #0000BB">$result</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents"><p>
    L&#039;agent affiche, pour les 2 travaux :
   </p></div>
   <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">Travail reçu : H:foo.local:65
Charge de l&#039;agent : !dlroW olleH (12)
1/12 complete
Travail reçu : H:foo.local:66
Charge de l&#039;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!</pre>
</div>
   </div>
   <div class="example-contents"><p>
    Affichage du client :
   </p></div>
   <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">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</pre>
</div>
   </div>
  </div>
 </div>


 <div class="refsect1 seealso" id="refsect1-gearmanclient.addtaskbackground-seealso">
  <h3 class="title">Voir aussi</h3>
  <ul class="simplelist">
   <li><span class="methodname"><a href="gearmanclient.addtask.php" class="methodname" rel="rdfs-seeAlso">GearmanClient::addTask()</a> - Ajoute une t&acirc;che &agrave; ex&eacute;cuter en parall&egrave;le</span></li>
   <li><span class="methodname"><a href="gearmanclient.addtaskhigh.php" class="methodname" rel="rdfs-seeAlso">GearmanClient::addTaskHigh()</a> - Ajoute une t&acirc;che de forte priorit&eacute; &agrave; effectuer en parall&egrave;le</span></li>
   <li><span class="methodname"><a href="gearmanclient.addtasklow.php" class="methodname" rel="rdfs-seeAlso">GearmanClient::addTaskLow()</a> - Ajoute une t&acirc;che de faible priorit&eacute; &agrave; effectuer en parall&egrave;le</span></li>
   <li><span class="methodname"><a href="gearmanclient.addtaskhighbackground.php" class="methodname" rel="rdfs-seeAlso">GearmanClient::addTaskHighBackground()</a> - Ajoute une t&acirc;che de fond de forte priorit&eacute; &agrave; effectuer en parall&egrave;le</span></li>
   <li><span class="methodname"><a href="gearmanclient.addtasklowbackground.php" class="methodname" rel="rdfs-seeAlso">GearmanClient::addTaskLowBackground()</a> - Ajoute une t&acirc;che de fond de faible priorit&eacute; &agrave; effectuer en parall&egrave;le</span></li>
   <li><span class="methodname"><a href="gearmanclient.runtasks.php" class="methodname" rel="rdfs-seeAlso">GearmanClient::runTasks()</a> - Ex&eacute;cute une liste de t&acirc;ches en parall&egrave;le</span></li>
  </ul>
 </div>


</div><?php manual_footer($setup); ?>