<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.outcontrol.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'outcontrol.flushing-system-buffers.php',
    1 => 'Laver les tampons syst&egrave;me',
    2 => 'Laver les tampons syst&egrave;me',
  ),
  'up' => 
  array (
    0 => 'book.outcontrol.php',
    1 => 'Contr&ocirc;le de l\'affichage',
  ),
  'prev' => 
  array (
    0 => 'outcontrol.output-buffering.php',
    1 => 'Bufferisation de sortie',
  ),
  'next' => 
  array (
    0 => 'outcontrol.user-level-output-buffers.php',
    1 => 'Tampons de sortie au niveau utilisateur',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/outcontrol/flushing-system-buffers.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="outcontrol.flushing-system-buffers" class="chapter">
 <h1 class="title">Laver les tampons système</h1>

 <p class="para">
  PHP apporte deux façons de vider
  (envoyer et supprimer le contenu) les tampons système :
  à travers l&#039;appel de <span class="function"><a href="function.flush.php" class="function">flush()</a></span>
  et en activant le vidage de tampon implicite
  avec <span class="function"><a href="function.ob-implicit-flush.php" class="function">ob_implicit_flush()</a></span>
  ou le paramètre <a href="outcontrol.configuration.php#ini.implicit-flush" class="link">implicit_flush</a>
  de <var class="filename">php.ini</var>.
 </p>

 <div class="section">
  <h2 class="title">Comportement de vidage de tampon de sortie</h2>
  <p class="para">
   Avec le vidage de tampon implicite désactivé, PHP ne lave la sortie que
   lorsque <span class="function"><a href="function.flush.php" class="function">flush()</a></span> est appelée ou lorsque le script se termine.
  </p>
  <p class="para">
   Avec le vidage de tampon implicite activé, PHP tentera de laver
   après chaque bloc de code produisant de la sortie.
   La sortie dans ce contexte est des données de longueur non nulle qui sont :
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      hors des balises <code class="literal">&lt;?php ?&gt;</code>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      affichées par des constructions de langage et des fonctions
      dont le but explicite est d&#039;afficher des variables ou des chaînes fournies par l&#039;utilisateur telles que
      <span class="function"><a href="function.echo.php" class="function">echo</a></span>, <span class="function"><a href="function.print.php" class="function">print</a></span>,
      <span class="function"><a href="function.printf.php" class="function">printf()</a></span>, <span class="function"><a href="function.var-dump.php" class="function">var_dump()</a></span>,
      <span class="function"><a href="function.var-export.php" class="function">var_export()</a></span>, <span class="function"><a href="function.vprintf.php" class="function">vprintf()</a></span>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      affichées par des fonctions dont le but est de collecter et de produire
      des données/informations sur le script en cours ou PHP telles que
      <span class="function"><a href="function.debug-print-backtrace.php" class="function">debug_print_backtrace()</a></span>, <span class="function"><a href="function.phpcredits.php" class="function">phpcredits()</a></span>,
      <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span>,
      <span class="methodname"><a href="reflectionextension.info.php" class="methodname">ReflectionExtension::info()</a></span>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      affichées par PHP sur une exception non capturée ou une erreur non gérée
      (sous réserve des paramètres de
      <a href="errorfunc.configuration.php#ini.display-errors" class="link">display_errors</a>
      et <a href="errorfunc.configuration.php#ini.error-reporting" class="link">error_reporting</a>)
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      tout ce qui est écrit dans <code class="literal">php://output</code>
     </span>
    </li>
   </ul>
  </p>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <span class="simpara">
    Afficher des chaînes vides ou envoyer des en-têtes n&#039;est pas considéré comme une sortie
    et ne déclenchera pas d&#039;opération de vidage de tampon.
   </span>
  </p></blockquote>
  <div class="warning"><strong class="warning">Avertissement</strong>
   <p class="simpara">
    Si le vidage de tampon implicite est activé, les caractères de contrôle
    (par exemple <code class="literal">&quot;\n&quot;</code>, <code class="literal">&quot;\r&quot;</code>,
    <code class="literal">&quot;\0&quot;</code>)
    déclencheront également un vidage de tampon.
   </p>
  </div>
 </div>

 <div class="section">
  <h2 class="title">Limitations</h2>
  <p class="para">
   Cette fonctionnalité ne peut pas laver les tampons de sortie de niveau utilisateur.
   Pour les utiliser ensemble, les tampons de sortie de niveau utilisateur doivent être lavés
   avant de laver les tampons système pour que PHP produise une sortie.
  </p>
  <div class="warning"><strong class="warning">Avertissement</strong>
   <p class="simpara">
    Appeler <span class="function"><a href="function.flush.php" class="function">flush()</a></span> ou activer le vidage de tampon implicite
    peut interférer avec les gestionnaires de sortie des tampons de sortie de niveau utilisateur
    qui définissent et envoient des en-têtes dans un contexte web
    (par exemple <span class="function"><a href="function.ob-gzhandler.php" class="function">ob_gzhandler()</a></span>)
    en envoyant des en-têtes avant que ces gestionnaires ne le fassent.
   </p>
  </div>
  <p class="para">
   La mise en tampon mise en œuvre par le logiciel/matériel sous-jacent
   ne peut pas être remplacée par PHP et doit être prise en compte
   lors de l&#039;utilisation des fonctions de contrôle des tampons de PHP.
   Vérifier les paramètres de mise en tampon des serveurs web/navigateurs/consoles
   et travailler avec ceux-ci peut atténuer les problèmes potentiels.
   Travailler dans un contexte web, soit les paramètres de mise en tampon du serveur web
   ou la mise en tampon du script pourrait être ajustée pour fonctionner en tandem
   alors que travailler autour des stratégies de mise en tampon de divers navigateurs
   peut être réalisé en ajustant la mise en tampon dans le script PHP.
   Sur les consoles qui implémentent la mise en tampon de ligne,
   les caractères de nouvelle ligne pourraient être insérés aux endroits appropriés
   avant de vider la sortie.
  </p>
 </div>

 <div class="section">
  <h2 class="title"><abbr title="Server Application Programming Interface">SAPI</abbr> Differences In Flushing</h2>
  <p class="para">
   Même si le vidage de tampon est implémenté par chaque <abbr title="Server Application Programming Interface">SAPI</abbr>
   de manière légèrement différente,
   ces implémentations tombent dans l&#039;une des deux catégories :
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Les <abbr title="Server Application Programming Interface">SAPI</abbr>s utilisés dans un contexte web videront d&#039;abord les en-têtes
      suivis de la sortie.
      <code class="literal">Apache2Handler</code>, <code class="literal">CGI</code>,
      <code class="literal">FastCGI</code> et <code class="literal">FPM</code>
      sont de tels <abbr title="Server Application Programming Interface">SAPI</abbr>s
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      d&#039;autres <abbr title="Server Application Programming Interface">SAPI</abbr>s
      tels que <code class="literal">CLI</code> et <code class="literal">embed</code>
      videront la sortie uniquement
     </span>
    </li>
   </ul>
  </p>
 </div>

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