<?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.user-level-output-buffers.php',
    1 => 'Tampons de sortie au niveau utilisateur',
    2 => 'Tampons de sortie au niveau utilisateur',
  ),
  'up' => 
  array (
    0 => 'book.outcontrol.php',
    1 => 'Contr&ocirc;le de l\'affichage',
  ),
  'prev' => 
  array (
    0 => 'outcontrol.flushing-system-buffers.php',
    1 => 'Laver les tampons syst&egrave;me',
  ),
  'next' => 
  array (
    0 => 'outcontrol.what-output-is-buffered.php',
    1 => 'Quelle sortie est bufferis&eacute;e ?',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/outcontrol/user-level-output-buffers.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/outcontrol.user-level-output-buffers.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="outcontrol.user-level-output-buffers" class="chapter">
 <h1 class="title">Tampons de sortie au niveau utilisateur</h1>
<h2>Sommaire</h2><ul class="chunklist chunklist_chapter"><li><a href="outcontrol.what-output-is-buffered.php">Quelle sortie est bufferis&eacute;e ?</a></li><li><a href="outcontrol.nesting-output-buffers.php">Imbrication des tampons de sortie</a></li><li><a href="outcontrol.buffer-size.php">Taille du tampon</a></li><li><a href="outcontrol.operations-on-buffers.php">Op&eacute;rations autoris&eacute;es sur les tampons</a></li><li><a href="outcontrol.output-handlers.php">Gestionnaires de sortie</a></li><li><a href="outcontrol.working-with-output-handlers.php">Travailler avec les gestionnaires de sortie</a></li><li><a href="outcontrol.flags-passed-to-output-handlers.php">Drapeaux pass&eacute;s aux gestionnaires de sortie</a></li><li><a href="outcontrol.output-handler-return-values.php">Valeurs de retour des gestionnaires de sortie</a></li></ul>

 <p class="para">
  La bufferisation de sortie au niveau utilisateur de PHP peut être commencée, manipulée
  et terminée depuis le code PHP.
  Chacun de ces tampons inclut un tampon de sortie
  et une fonction de gestion de sortie associée.
 </p>

 

 <div class="section">
  <h2 class="title">Démarrer un tampon de sortie</h2>
  <p class="para">
   Les tampons de sortie au niveau utilisateur peuvent être démarrés
   en utilisant la fonction <span class="function"><a href="function.ob-start.php" class="function">ob_start()</a></span> ou en définissant
   les paramètres <a href="outcontrol.configuration.php#ini.output-buffering" class="link">output_buffering</a>
   et <a href="outcontrol.configuration.php#ini.output-handler" class="link">output_handler</a> de <var class="filename">php.ini</var>.
   Tant l&#039;un que l&#039;autre peuvent créer des tampons de sortie,
   <span class="function"><a href="function.ob-start.php" class="function">ob_start()</a></span> est plus flexible
   car il accepte des fonctions définies par l&#039;utilisateur comme gestionnaires de sortie
   et les opérations autorisées sur le tampon (flush, clean, remove)
   peuvent être définies également.
   Les tampons de sortie démarrés avec <span class="function"><a href="function.ob-start.php" class="function">ob_start()</a></span> seront actifs
   à partir de la ligne où la fonction a été appelée,
   tandis que ceux démarrés avec
   <a href="outcontrol.configuration.php#ini.output-buffering" class="link">output_buffering</a>
   bufferiseront la sortie à partir de la première ligne du script.
  </p>
  <p class="para">
   PHP est également livré avec un gestionnaire de sortie intégré <code class="literal">&quot;URL-Rewriter&quot;</code>
   qui démarre son propre tampon de sortie et ne permet que deux instances de celui-ci
   à fonctionner en même temps 
   (une pour la réécriture d&#039;URL au niveau utilisateur
   et une pour le support transparent des identifiants de session).
   Ces tampons peuvent être démarrés en appelant
   la fonction <span class="function"><a href="function.output-add-rewrite-var.php" class="function">output_add_rewrite_var()</a></span>
   et/ou en activant le paramètre
   <a href="session.configuration.php#ini.session.use-trans-sid" class="link">session.use_trans_sid</a>
   de <var class="filename">php.ini</var>.
  </p>
  <p class="para">
   L&#039;extension <code class="literal">zlib</code> a son propre tampon de sortie
   qui peut être activé en utilisant le paramètre
   <a href="zlib.configuration.php#ini.zlib.output-compression" class="link">zlib.output_compression</a>
   de <var class="filename">php.ini</var>.
  </p>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <span class="simpara">
    Tant que <code class="literal">&quot;URL-Rewriter&quot;</code> est spécial
    en ce qu&#039;il ne permet que deux instances de celui-ci à fonctionner en même temps,
    tous les tampons de sortie au niveau utilisateur utilisent les mêmes tampons sous-jacents
    utilisés par <span class="function"><a href="function.ob-start.php" class="function">ob_start()</a></span>
    avec leur fonctionnalité implémentée par une fonction de gestion de sortie personnalisée.
    En tant que tel, toute leur fonctionnalité peut être émulée par du code utilisateur.
   </span>
  </p></blockquote>
 </div>

 

 

 

 <div class="section">
  <h2 class="title">Laver, accéder et nettoyer le contenu du tampon</h2>
  <p class="para">
   Laver envoie et supprime le contenu du tampon actif.
   Les tampons de sortie sont lavés lorsque la taille de la sortie
   dépasse la taille du tampon, le script se termine ou 
   <span class="function"><a href="function.ob-flush.php" class="function">ob_flush()</a></span>, <span class="function"><a href="function.ob-end-flush.php" class="function">ob_end_flush()</a></span>,
   ou <span class="function"><a href="function.ob-get-flush.php" class="function">ob_get_flush()</a></span> est appelé.
  </p>
  <div class="caution"><strong class="caution">Attention</strong>
   <p class="simpara">
    Appeler <span class="function"><a href="function.ob-end-flush.php" class="function">ob_end_flush()</a></span>
    ou <span class="function"><a href="function.ob-get-flush.php" class="function">ob_get_flush()</a></span> désactivera le tampon actif.
   </p>
  </div>
  <div class="caution"><strong class="caution">Attention</strong>
   <p class="simpara">
    Laver les tampons va laver la valeur de retour du gestionnaire de sortie
    qui peut différer du contenu du tampon.
    Par exemple, utiliser <span class="function"><a href="function.ob-gzhandler.php" class="function">ob_gzhandler()</a></span> va compresser
    la sortie et laver la sortie compressée.
   </p>
  </div>
  <p class="para">
   Le contenu du tampon actif peut être récupéré en appelant
   ou <span class="function"><a href="function.ob-get-flush.php" class="function">ob_get_flush()</a></span>.
  </p>
  <p class="para">
   Si seule la longueur du contenu du tampon est nécessaire,
   <span class="function"><a href="function.ob-get-length.php" class="function">ob_get_length()</a></span> ou <span class="function"><a href="function.ob-get-status.php" class="function">ob_get_status()</a></span>
   va retourner la longueur du contenu en octets.
  </p>
  <div class="caution"><strong class="caution">Attention</strong>
   <p class="simpara">
    Appeler <span class="function"><a href="function.ob-get-clean.php" class="function">ob_get_clean()</a></span>
    ou <span class="function"><a href="function.ob-get-flush.php" class="function">ob_get_flush()</a></span> désactivera le tampon actif
    après avoir retourné son contenu.
   </p>
  </div>
  <p class="para">
   Le contenu du tampon actif peut être nettoyé en appelant
   <span class="function"><a href="function.ob-clean.php" class="function">ob_clean()</a></span>, <span class="function"><a href="function.ob-end-clean.php" class="function">ob_end_clean()</a></span>
   ou <span class="function"><a href="function.ob-get-clean.php" class="function">ob_get_clean()</a></span>.
  </p>
  <div class="caution"><strong class="caution">Attention</strong>
   <p class="simpara">
    Appeler <span class="function"><a href="function.ob-end-clean.php" class="function">ob_end_clean()</a></span>
    ou <span class="function"><a href="function.ob-get-clean.php" class="function">ob_get_clean()</a></span> désactivera le tampon actif.
   </p>
  </div>
 </div>

 <div class="section">
  <h2 class="title">Désactiver les tampons</h2>
  <p class="para">
   Les tampons de sortie peuvent être désactivés en appelant
   <span class="function"><a href="function.ob-end-clean.php" class="function">ob_end_clean()</a></span>, <span class="function"><a href="function.ob-end-flush.php" class="function">ob_end_flush()</a></span>,
   <span class="function"><a href="function.ob-get-flush.php" class="function">ob_get_flush()</a></span> ou <span class="function"><a href="function.ob-get-clean.php" class="function">ob_get_clean()</a></span>.
  </p>
  <div class="warning"><strong class="warning">Avertissement</strong>
   <p class="simpara">
    Les tampons de sortie démarrés sans le drapeau
    <strong><code><a href="outcontrol.constants.php#constant.php-output-handler-removable">PHP_OUTPUT_HANDLER_REMOVABLE</a></code></strong>
    ne peuvent pas être désactivés et généreront une <strong><code><a href="errorfunc.constants.php#constant.e-notice">E_NOTICE</a></code></strong>.
   </p>
  </div>
  <p class="para">
   Chaque tampon de sortie qui n&#039;a pas été désactivé à la fin du script
   ou lorsque <span class="function"><a href="function.exit.php" class="function">exit()</a></span> est appelé sera lavé
   et désactivé par le processus de terminaison de PHP.
   Les tampons seront lavés et désactivés dans l&#039;ordre inverse
   de leur démarrage.
   Le dernier tampon démarré sera le premier,
   le premier tampon démarré sera le dernier à être lavé et désactivé.
  </p>
  <div class="caution"><strong class="caution">Attention</strong>
   <p class="simpara">
    Si le vidage de tampon du contenu du tampon n&#039;est pas désiré,
    un gestionnaire de sortie personnalisé doit être utilisé pour empêcher le vidage de tampon lors de la fermeture.
   </p>
  </div>
 </div>

 

 

 

 

 <div class="section">
  <h2 class="title">Exceptions lancées dans les gestionnaires de sortie</h2>
  <p class="para">
   Si une exception non capturée est lancée dans un gestionnaire de sortie
   le programme se termine et le gestionnaire est invoqué
   par le processus de terminaison après quoi
   le message d&#039;erreur <code class="literal">&quot;Uncaught Exception&quot;</code> est retourné.
  </p>
  <p class="para">
   Si l&#039;exception non capturée est lancée dans un gestionnaire
   invoqué par <span class="function"><a href="function.ob-flush.php" class="function">ob_flush()</a></span>,
   <span class="function"><a href="function.ob-end-flush.php" class="function">ob_end_flush()</a></span> ou <span class="function"><a href="function.ob-get-flush.php" class="function">ob_get_flush()</a></span>,
   le contenu du tampon est lavé avant le message d&#039;erreur.
  </p>
  <p class="para">
   Si une exception non capturée est lancée dans un gestionnaire de sortie pendant la terminaison,
   le gestionnaire est terminé et ni le contenu du tampon ni
   le message d&#039;erreur ne sont lavés.
  </p>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <span class="simpara">
    Si un gestionnaire lance une exception
    son drapeau <strong><code><a href="outcontrol.constants.php#constant.php-output-handler-disabled">PHP_OUTPUT_HANDLER_DISABLED</a></code></strong> est défini.
   </span>
  </p></blockquote>
 </div>

 <div class="section">
  <h2 class="title">Erreurs levées dans les gestionnaires de sortie</h2>
  <p class="para">
   Si une erreur non fatale est levée dans un gestionnaire de sortie
   le programme continue son exécution.
  </p>
  <p class="para">
   Si une erreur non fatale est levée dans un gestionnaire invoqué par
   <span class="function"><a href="function.ob-flush.php" class="function">ob_flush()</a></span>, <span class="function"><a href="function.ob-end-flush.php" class="function">ob_end_flush()</a></span>
   ou <span class="function"><a href="function.ob-get-flush.php" class="function">ob_get_flush()</a></span>,
   le tampon vide certaines données en fonction de la valeur de retour du gestionnaire.
   Si le gestionnaire retourne <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> le tampon et le message d&#039;erreur sont lavés.
   Si le gestionnaire retourne autre chose, la valeur de retour du gestionnaire est lavée
   mais pas le message d&#039;erreur.
  </p>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <span class="simpara">
    Si un gestionnaire retourne <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>
    son drapeau <strong><code><a href="outcontrol.constants.php#constant.php-output-handler-disabled">PHP_OUTPUT_HANDLER_DISABLED</a></code></strong> est défini.
   </span>
  </p></blockquote>
  <p class="para">
   Si une erreur fatale est levée dans un gestionnaire de sortie
   le programme se termine et le gestionnaire est invoqué
   par le processus de terminaison après quoi le message d&#039;erreur est lavé.
  </p>
  <p class="para">
   Si l&#039;erreur fatale est levée dans un gestionnaire invoqué par
   <span class="function"><a href="function.ob-flush.php" class="function">ob_flush()</a></span>, <span class="function"><a href="function.ob-end-flush.php" class="function">ob_end_flush()</a></span>
   ou <span class="function"><a href="function.ob-get-flush.php" class="function">ob_get_flush()</a></span>,
   le contenu du tampon est lavé avant le message d&#039;erreur.
  </p>
  <p class="para">
   Si une erreur fatale est levée dans un gestionnaire de sortie pendant la terminaison
   le programme se termine sans laver le contenu du tampon ou le message d&#039;erreur.
  </p>
 </div>

 <div class="section">
  <h2 class="title">Sortie dans les gestionnaires de sortie</h2>
  <p class="para">
   Dans des circonstances spécifiques, la sortie produite dans le gestionnaire est lavée
   avec le contenu du tampon.
   Cette sortie n&#039;est pas ajoutée au tampon et ne fait pas partie de la chaîne
   retournée par <span class="function"><a href="function.ob-get-flush.php" class="function">ob_get_flush()</a></span>.
  </p>
  <p class="para">
   Durant les opérations de vidage de tampon (appel de <span class="function"><a href="function.ob-flush.php" class="function">ob_flush()</a></span>,
   <span class="function"><a href="function.ob-end-flush.php" class="function">ob_end_flush()</a></span>, <span class="function"><a href="function.ob-get-flush.php" class="function">ob_get_flush()</a></span>
   et pendant la terminaison)
   si la valeur de retour d&#039;un gestionnaire est <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>
   le contenu du tampon est lavé suivi de la sortie.
   Si le gestionnaire n&#039;est pas invoqué pendant la terminaison
   le gestionnaire lançant une exception ou l&#039;appel de <span class="function"><a href="function.exit.php" class="function">exit()</a></span>
   résulte dans le même comportement.
  </p>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <span class="simpara">
    Si un gestionnaire retourne <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>
    son drapeau <strong><code><a href="outcontrol.constants.php#constant.php-output-handler-disabled">PHP_OUTPUT_HANDLER_DISABLED</a></code></strong> est défini.
   </span>
  </p></blockquote>
 </div>

 <div class="section">
  <h2 class="title">Drapeaux d&#039;état des gestionnaires de sortie</h2>
  <p class="para">
   Les 
   <a href="outcontrol.constants.php#outcontrol.constants.flags-returned-by-handler" class="link">
    drapeaux d&#039;état des gestionnaires
   </a> du masque de bits <code class="literal">flags</code> du tampon
   sont définis à chaque invocation du gestionnaire de sortie
   et font partie du masque de bits <code class="literal">flags</code> retourné par
   <span class="function"><a href="function.ob-get-status.php" class="function">ob_get_status()</a></span>. 
   Si le gestionnaire exécute avec succès et ne retourne pas <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>,
   <strong><code><a href="outcontrol.constants.php#constant.php-output-handler-started">PHP_OUTPUT_HANDLER_STARTED</a></code></strong> et
   <strong><code><a href="outcontrol.constants.php#constant.php-output-handler-processed">PHP_OUTPUT_HANDLER_PROCESSED</a></code></strong> sont définis.
   Si le gestionnaire retourne <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> ou lance une exception pendant l&#039;exécution,
   <strong><code><a href="outcontrol.constants.php#constant.php-output-handler-started">PHP_OUTPUT_HANDLER_STARTED</a></code></strong> et
   <strong><code><a href="outcontrol.constants.php#constant.php-output-handler-disabled">PHP_OUTPUT_HANDLER_DISABLED</a></code></strong> sont définis.
  </p>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <span class="simpara">
    Si <strong><code><a href="outcontrol.constants.php#constant.php-output-handler-disabled">PHP_OUTPUT_HANDLER_DISABLED</a></code></strong> d&#039;un gestionnaire est défini,
    le gestionnaire ne sera pas invoqué en appelant
    <span class="function"><a href="function.ob-end-clean.php" class="function">ob_end_clean()</a></span>, <span class="function"><a href="function.ob-end-flush.php" class="function">ob_end_flush()</a></span>,
    <span class="function"><a href="function.ob-get-clean.php" class="function">ob_get_clean()</a></span>, <span class="function"><a href="function.ob-get-flush.php" class="function">ob_get_flush()</a></span>
    <span class="function"><a href="function.ob-get-clean.php" class="function">ob_get_clean()</a></span>, <span class="function"><a href="function.ob-get-flush.php" class="function">ob_get_flush()</a></span>,
    <span class="function"><a href="function.ob-clean.php" class="function">ob_clean()</a></span>,
    <span class="function"><a href="function.ob-flush.php" class="function">ob_flush()</a></span>
    ou pendant le processus de terminaison de PHP.
    Avant PHP 8.4.0, ce drapeau n&#039;avait aucun effet lors de l&#039;appel de la fonction <span class="function"><a href="function.ob-clean.php" class="function">ob_clean()</a></span>
    ou <span class="function"><a href="function.ob-flush.php" class="function">ob_flush()</a></span>.
   </span>
  </p></blockquote>
 </div>

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