<?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.output-buffering.php',
    1 => 'Bufferisation de sortie',
    2 => 'Bufferisation de sortie',
  ),
  'up' => 
  array (
    0 => 'book.outcontrol.php',
    1 => 'Contr&ocirc;le de l\'affichage',
  ),
  'prev' => 
  array (
    0 => 'outcontrol.constants.php',
    1 => 'Constantes pr&eacute;-d&eacute;finies',
  ),
  'next' => 
  array (
    0 => 'outcontrol.flushing-system-buffers.php',
    1 => 'Laver les tampons syst&egrave;me',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/outcontrol/output-buffering.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="outcontrol.output-buffering" class="chapter">
 <h1 class="title">Bufferisation de sortie</h1>

 <p class="para">
  La bufferisation de sortie est le stockage tamponné (temporaire) de la sortie
  avant qu&#039;elle ne soit lavée (envoyée et supprimée) au navigateur (dans un contexte web)
  ou au shell (en ligne de commande).
  Tant que la bufferisation de sortie est active, aucune sortie n&#039;est envoyée par le script,
  au lieu de cela, la sortie est stockée dans un tampon interne.
 </p>

 <div class="section">
  <h2 class="title">Effets de la bufferisation sur PHP</h2>
  <p class="para">
   PHP dépend de l&#039;infrastructure logicielle/matérielle sous-jacente
   lors du vidage de tampon de la sortie.
   La bufferisation implémentée par les consoles en ligne de commande (par exemple, en mode ligne)
   ou les serveurs web et les navigateurs dans un contexte web (par exemple, entièrement bufferisé)
   affectent quand la sortie est affichée à l&#039;utilisateur final.
   Certains de ces effets peuvent être éliminés en ajustant finement les paramètres du serveur
   et/ou en alignant les tailles des tampons des différentes couches.
  </p>
 </div>

 <div class="section">
  <h2 class="title">Contrôle de la bufferisation de sortie en PHP</h2>
  <p class="para">
   PHP apporte un tampon de sortie utilisateur entièrement bufferisé
   avec des fonctions pour démarrer, manipuler et désactiver le tampon
   (la plupart des fonctions <a href="ref.outcontrol.php" class="link">ob_<span class="replaceable">*</span></a>),
   et deux fonctions pour laver les tampons système sous-jacents
   (<span class="function"><a href="function.flush.php" class="function">flush()</a></span> et <span class="function"><a href="function.ob-implicit-flush.php" class="function">ob_implicit_flush()</a></span>).
   Certaines de ces fonctionnalités peuvent être définies et/ou configurées
   en utilisant les paramètres <var class="filename">php.ini</var> appropriés.
  </p>
 </div>

 <div class="section">
  <h2 class="title">Cas d&#039;utilisation</h2>
  <p class="para">
   La bufferisation de sortie est généralement utile dans des situations où la sortie bufferisée
   est modifiée ou inspectée, ou elle est utilisée plus d&#039;une fois dans une requête ;
   ou lorsque le vidage de tampon contrôlé de la sortie est désiré.
   Les cas d&#039;utilisation spécifiques incluent :
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      mettre en cache le résultat de scripts de calcul/temps intensifs
      par exemple en générant des pages <code class="literal">HTML</code> statiques
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      réutiliser la sortie générée en l&#039;affichant, en la sauvegardant dans un fichier
      et/ou en l&#039;envoyant par email
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      laver la <code class="literal">head</code> d&#039;une page <code class="literal">HTML</code>
      séparée du <code class="literal">body</code> permet aux navigateurs
      de charger des ressources externes pendant que le script exécute
      des processus potentiellement plus longs
      (par exemple, accès à une base de données/fichier, connexion réseau externe).
      Ceci est utile uniquement si le code d&#039;état <code class="literal">HTTP</code>
      ne peut pas changer après l&#039;envoi des en-têtes
    </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      extraire des informations de fonctions qui produiraient autrement une sortie
      (par exemple <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span>)
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      contrôler la sortie de code tiers en modifiant/utilisant des parties
      (par exemple, extraire des données, remplacer des mots/phrases,
      ajouter des balises <code class="literal">HTML</code> manquantes),
      ou en la supprimant entièrement dans certaines conditions (par exemple, erreurs)
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Polyfiller certaines fonctionnalités de serveur web indisponibles
      (par exemple, compresser ou encoder la sortie)
     </span>
    </li>
   </ul>
  </p>
 </div>

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