<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/refs.fileprocess.process.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'book.pthreads.php',
    1 => 'pthreads',
    2 => 'pthreads',
  ),
  'up' => 
  array (
    0 => 'refs.fileprocess.process.php',
    1 => 'Extensions sur le contr&ocirc;le des processus',
  ),
  'prev' => 
  array (
    0 => 'parallel-sync.invoke.php',
    1 => 'parallel\\Sync::__invoke',
  ),
  'next' => 
  array (
    0 => 'pthreads.setup.php',
    1 => 'Installation/Configuration',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/pthreads/book.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/book.pthreads.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="book.pthreads" class="book">
 
 <h1 class="title">pthreads</h1>
 

 <div id="intro.pthreads" class="preface">
  <h1 class="title">Introduction</h1>
  <p class="simpara">
   pthreads est une API orientée objet qui apporte tous les outils nécessaires pour
   le multithreading en PHP.
   Les applications PHP peuvent créer, lire, écrire, exécuter
   et synchroniser des Threads, des Workers, et des objets Threaded.
  </p>
  <div class="warning"><strong class="warning">Avertissement</strong>
   <p class="simpara">
    Cette extension est considérée non maintenue et morte.
   </p>
  </div>
  <div class="tip"><strong class="tip">Astuce</strong>
   <p class="simpara">
    Envisager d&#039;utiliser <a href="book.parallel.php" class="link">parallel</a> à la place.
   </p>
  </div>
  <div class="warning"><strong class="warning">Avertissement</strong>
   <p class="simpara">
    L&#039;extension pthreads ne peut pas être utilisée dans un environnement de
    serveur Web. Le Threading en PHP est donc limité aux applications basées
    sur CLI uniquement.
   </p>
  </div>
  <div class="warning"><strong class="warning">Avertissement</strong>
   <p class="simpara">
    pthreads (v3) peut être utilisé uniquement avec PHP 7.2+ à cause d&#039;un
    mode ZTS dangereux en PHP 7.0 et 7.1.
   </p>
  </div>
  <p class="simpara">
   La classe <span class="classname"><a href="class.threaded.php" class="classname">Threaded</a></span> constitue la base de la
   fonctionnalité qui permet à pthreads de fonctionner. Elle expose les méthodes
   de synchronisation et quelques interfaces utiles pour le programmeur.
  </p>
  <p class="simpara">
   La classe <span class="classname"><a href="class.thread.php" class="classname">Thread</a></span> permet de créer des threads en
   l&#039;étendant simplement et en implémentant une méthode <code class="literal">run</code>.
   Tous les membres peuvent être écrits et lus par n&#039;importe quel contexte avec
   une référence au thread. Tout contexte peut également exécuter toutes les
   méthodes publiques et protégées. Le corps de la méthode run sera exécuté
   dans un thread séparé lorsque la méthode <span class="methodname"><a href="thread.start.php" class="methodname">Thread::start()</a></span>
   de l&#039;implémentation est appelée à partir du contexte qui l&#039;a créé. Seul le
   contexte qui crée un thread peut le démarrer et le rejoindre.
  </p>
  <p class="simpara">
   La classe <span class="classname"><a href="class.worker.php" class="classname">Worker</a></span> a un état persistant et sera
   disponible à partir de l&#039;appel à <span class="methodname"><a href="thread.start.php" class="methodname">Thread::start()</a></span> (une
   méthode héritée) jusqu&#039;à ce que l&#039;objet soit hors de portée, ou soit
   explicitement arrêté (via <span class="methodname"><a href="worker.shutdown.php" class="methodname">Worker::shutdown()</a></span>). Tout
   contexte avec une référence à l&#039;objet Worker peut empiler des tâches sur le
   Worker (via <span class="methodname"><a href="worker.stack.php" class="methodname">Worker::stack()</a></span>), où ces tâches seront
   exécutées par le Worker dans un thread séparé. La méthode
   <code class="literal">run</code> d&#039;un objet worker est exécutée avant tout objet de la
   pile du worker, ce qui permet aux ressources d&#039;être initialisées pour que
   les objets à exécuter puissent les utiliser.
  </p>
  <p class="simpara">
   La classe <span class="classname"><a href="class.pool.php" class="classname">Pool</a></span> est utilisée pour créer un groupe de
   worker pour distribuer des objets <span class="classname"><a href="class.threaded.php" class="classname">Threaded</a></span> parmi eux.
   Il est le moyen le plus facile et le plus efficace d&#039;utiliser plusieurs
   threads dans les applications PHP.
  </p>
  <div class="caution"><strong class="caution">Attention</strong>
   <p class="simpara">
    La classe <span class="classname"><a href="class.pool.php" class="classname">Pool</a></span> n&#039;étend pas la classe
   <span class="classname"><a href="class.threaded.php" class="classname">Threaded</a></span>, et donc les objets basés sur pool sont
   considérés comme des objets PHP normaux. En tant que tel, ses instances ne
   doivent pas être partagées entre des contextes différents.
   </p>
  </div>
  <p class="simpara">
   La classe <span class="classname"><a href="class.volatile.php" class="classname">Volatile</a></span> est nouvelle pour pthreads v3.
   Elle est utilisée pour désigner les propriétés <span class="classname"><a href="class.threaded.php" class="classname">Threaded</a></span>
   mutable des classes <span class="classname"><a href="class.threaded.php" class="classname">Threaded</a></span> (car celles-ci sont
   désormais immuables par défaut). Elle est également utilisée pour stocker
   des tableaux PHP dans des contextes <span class="classname"><a href="class.threaded.php" class="classname">Threaded</a></span>.
  </p>
  <p class="simpara">
   La synchronisation est une capacité importante lors du Threading. Tous les
   objets créés par pthreads ont été construits en synchronisation dans la
   forme (qui sera familière aux programmeurs Java) de
   <span class="methodname"><a href="threaded.wait.php" class="methodname">Threaded::wait()</a></span> et
   <span class="methodname"><a href="threaded.notify.php" class="methodname">Threaded::notify()</a></span>. L&#039;appel de
   <span class="methodname"><a href="threaded.wait.php" class="methodname">Threaded::wait()</a></span> sur un objet entraînera le contexte
   à attendre qu&#039;un autre contexte appelle
   <span class="methodname"><a href="threaded.notify.php" class="methodname">Threaded::notify()</a></span> sur le même objet. Ce mécanisme
   permet une synchronisation puissante entre les objets
   <span class="classname"><a href="class.threaded.php" class="classname">Threaded</a></span> en PHP.
  </p>
  <div class="caution"><strong class="caution">Attention</strong>
   <p class="simpara">
    Tout objet prévu pour être utilisé dans une partie multithreadée de
    l&#039;application doit étendre <span class="classname"><a href="class.threaded.php" class="classname">Threaded</a></span>.
   </p>
  </div>
  <p class="simpara">
   Stockage des données : En règle générale, tous les types de données pouvant être sérialisés peuvent
   être utilisés comme membre d&#039;un objet Threadé, ils peuvent être lus, et écrits depuis n&#039;importe quel
   contexte avec une référence vers l&#039;objet Threadé. Tous les types de données ne sont pas stockés
   après sérialisation ; les types simples sont stockés sous leur forme initiale. Les types complexes,
   les tableaux et les objets qui ne sont pas Threadés, sont stockés sérialisés ; ils peuvent être lus
   et écrits dans l&#039;objet Threadé depuis n&#039;importe quel contexte avec une référence.
   A l&#039;exception des objets Threadés, toute référence utilisée pour définir un membre d&#039;un objet Threadé
   est séparée de la référence dans l&#039;objet Threadé ; les mêmes données peuvent être lues directement
   depuis l&#039;objet Threadé à tout moment par n&#039;importe quel contexte avec une référence vers l&#039;objet Threadé.
  </p>
  <p class="simpara">
   Membres statiques : Lorsqu&#039;un nouveau contexte est créé (Thread ou Worker),
   ils sont généralement copiés, mais les ressources et objets avec un état
   interne sont nullifiés (pour des raisons de sécurité). Ceci permet alors à la fonction une sorte de stockage local
   au niveau du thread. Par exemple, lors du démarrage du contexte, une classe dont les membres statiques
   incluent des informations de connexion vers un serveur de base de données, seules les informations
   seront copiées, et non la connexion en tant que telle. Ceci permet au nouveau contexte d&#039;initialiser
   une connexion de la même façon que le contexte qui l&#039;a créé, stockant la connexion au même endroit
   sans pour autant affecter le contexte original.
  </p>
  <div class="caution"><strong class="caution">Attention</strong>
  <p class="simpara">
   Lorsque print_r, var_dump et d&#039;autres fonctions de débogage sont exécutées, elles n&#039;incluent pas
   de protection contre la récursion.
  </p>
  </div>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <span class="simpara">
    Ressources : Les extensions et les fonctionnalités qui définissent des ressources en PHP ne sont pas préparées
    pour ce type d&#039;environnement ; pthreads prend des dispositions en matière de ressource à partager entre
    les contextes, cependant, pour la plupart des ressources, elles devront être considérées comme dangereuses.
    Un soin et une extrême prudence devront être de mise pour partager les ressources entre les contextes.
   </span>
  </p></blockquote>
  <div class="caution"><strong class="caution">Attention</strong>
   <p class="simpara">
    Dans l&#039;environnement d&#039;exécution de pthreads, des restrictions et des limitations sont nécessaires afin de
    fournir un environnement stable.
   </p>
  </div>
 </div>

 






 






 






 






 






 






 






 






<ul class="chunklist chunklist_book"><li><a href="pthreads.setup.php">Installation/Configuration</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="pthreads.requirements.php">Pr&eacute;-requis</a></li><li><a href="pthreads.installation.php">Installation</a></li></ul></li><li><a href="pthreads.constants.php">Constantes pr&eacute;-d&eacute;finies</a></li><li><a href="class.threaded.php">Threaded</a> — La classe Threaded<ul class="chunklist chunklist_book chunklist_children"><li><a href="threaded.chunk.php">Threaded::chunk</a> — Manipulation</li><li><a href="threaded.count.php">Threaded::count</a> — Manipulation</li><li><a href="threaded.extend.php">Threaded::extend</a> — Manipulation pendant l'ex&eacute;cution</li><li><a href="thread.isrunning.php">Threaded::isRunning</a> — D&eacute;tection de statut</li><li><a href="threaded.isterminated.php">Threaded::isTerminated</a> — D&eacute;tection de statut</li><li><a href="threaded.merge.php">Threaded::merge</a> — Manipulation</li><li><a href="threaded.notify.php">Threaded::notify</a> — Synchronisation</li><li><a href="threaded.notifyone.php">Threaded::notifyOne</a> — Synchronise</li><li><a href="threaded.pop.php">Threaded::pop</a> — Manipulation</li><li><a href="threaded.run.php">Threaded::run</a> — Ex&eacute;cution</li><li><a href="threaded.shift.php">Threaded::shift</a> — Manipulation</li><li><a href="threaded.synchronized.php">Threaded::synchronized</a> — Synchronisation</li><li><a href="threaded.wait.php">Threaded::wait</a> — Synchronisation</li></ul></li><li><a href="class.thread.php">Thread</a> — La classe Thread<ul class="chunklist chunklist_book chunklist_children"><li><a href="thread.getcreatorid.php">Thread::getCreatorId</a> — Identification</li><li><a href="thread.getcurrentthread.php">Thread::getCurrentThread</a> — Identification</li><li><a href="thread.getcurrentthreadid.php">Thread::getCurrentThreadId</a> — Identification</li><li><a href="thread.getthreadid.php">Thread::getThreadId</a> — Identification</li><li><a href="thread.isjoined.php">Thread::isJoined</a> — D&eacute;tection de statut</li><li><a href="thread.isstarted.php">Thread::isStarted</a> — D&eacute;tection de statut</li><li><a href="thread.join.php">Thread::join</a> — Synchronisation</li><li><a href="thread.start.php">Thread::start</a> — Ex&eacute;cution</li></ul></li><li><a href="class.worker.php">Worker</a> — La classe Worker<ul class="chunklist chunklist_book chunklist_children"><li><a href="worker.collect.php">Worker::collect</a> — Collecte les r&eacute;f&eacute;rences des t&acirc;ches termin&eacute;es</li><li><a href="worker.getstacked.php">Worker::getStacked</a> — Obtient la taille de pile restante</li><li><a href="worker.isshutdown.php">Worker::isShutdown</a> — D&eacute;tection de statut</li><li><a href="worker.shutdown.php">Worker::shutdown</a> — Arr&ecirc;ter le worker</li><li><a href="worker.stack.php">Worker::stack</a> — Empile la t&acirc;che</li><li><a href="worker.unstack.php">Worker::unstack</a> — D&eacute;pile une t&acirc;che</li></ul></li><li><a href="class.collectable.php">Collectable</a> — L'interface Collectable<ul class="chunklist chunklist_book chunklist_children"><li><a href="collectable.isgarbage.php">Collectable::isGarbage</a> — D&eacute;termine si un objet a &eacute;t&eacute; marqu&eacute; comme obsol&egrave;te</li></ul></li><li><a href="class.pool.php">Pool</a> — La classe Pool<ul class="chunklist chunklist_book chunklist_children"><li><a href="pool.collect.php">Pool::collect</a> — Collecte les r&eacute;f&eacute;rences des t&acirc;ches achev&eacute;es</li><li><a href="pool.construct.php">Pool::__construct</a> — Cr&eacute;e un nouveau Pool de Workers</li><li><a href="pool.resize.php">Pool::resize</a> — Redimensionne le Pool</li><li><a href="pool.shutdown.php">Pool::shutdown</a> — Arr&ecirc;te tous les workers</li><li><a href="pool.submit.php">Pool::submit</a> — Soumet un objet pour ex&eacute;cution</li><li><a href="pool.submitTo.php">Pool::submitTo</a> — Soumet une t&acirc;che &agrave; un worker sp&eacute;cifique pour ex&eacute;cution</li></ul></li><li><a href="class.volatile.php">Volatile</a> — La classe Volatile</li></ul></div><?php manual_footer($setup); ?>