Position actuelle: Accueil> Derniers articles> Après avoir utilisé la fonction OB_CLEAN pour nettoyer le tampon, comment s'assurer que le contenu de sortie peut être affiché normalement?

Après avoir utilisé la fonction OB_CLEAN pour nettoyer le tampon, comment s'assurer que le contenu de sortie peut être affiché normalement?

gitbox 2025-08-29

Qu'est-ce qu'un tampon de sortie?

En PHP, le tampon de sortie est une zone de stockage temporaire utilisée pour stocker le contenu de la sortie du script. Normalement, PHP enverra directement le contenu de la page au navigateur pour l'affichage. Cependant, lorsque la tampon de sortie est activée, PHP stocke toutes les sorties (telles que HTML, texte ou messages d'erreur) dans le tampon jusqu'à ce que le tampon soit effacé ou que le script soit exécuté. En permettant la mise en mémoire tampon de sortie, les développeurs peuvent contrôler la synchronisation, l'ordre et même la modification du contenu du contenu de sortie.

Le rôle de la fonction OB_CLEAN

La fonction OB_CLEAN est utilisée pour effacer le tampon de sortie de PHP. Lorsque vous appelez OB_CLEAN , PHP efface tout stocké dans le tampon, mais ne ferme pas le tampon. Le but de nettoyer le tampon est généralement de s'assurer que la sortie ultérieure peut être envoyée au navigateur comme prévu.

Pourquoi y a-t-il des problèmes?

Bien que OB_CLEAN puisse effacer le tampon de sortie, si l'état du tampon n'est pas correctement géré, les problèmes suivants peuvent se produire après le nettoyage:

  1. La sortie n'est pas envoyée au navigateur : si le tampon n'est pas rincé ( ob_flush ) ou n'est pas sorti correctement au navigateur, il peut entraîner un blanc ou rien n'est affiché.

  2. La sortie ultérieure est bloquée : après effacer le tampon, si le tampon n'est pas réactivé ou que l'état du tampon est correctement traité, la sortie ultérieure peut être "rejetée" ou n'a pas été envoyée comme prévu.

  3. Le navigateur reçoit des réponses incomplètes : si le tampon n'est pas géré correctement, le navigateur peut ne pas recevoir de réponse HTTP complète, entraînant la défaillance de chargement de la page.

Comment s'assurer que la sortie s'affiche normalement?

Afin de s'assurer que la sortie suivante peut être affichée normalement après le nettoyage du tampon, les mesures suivantes doivent être prises:

1. Effacer le tampon et actualiser le contenu

Après avoir appelé OB_CLEAN pour effacer le tampon, il est généralement nécessaire d'appeler OB_FLOSH pour envoyer le contenu dans le tampon au navigateur. Il s'agit d'une étape clé pour s'assurer que le contenu est affiché correctement.

 <span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Allumez le tampon de sortie</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Hello, this is some content."</span></span><span>;

</span><span><span class="hljs-title function_ invoke__">ob_clean</span></span><span>(); </span><span><span class="hljs-comment">// Effacer le tampon</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_flush</span></span><span>(); </span><span><span class="hljs-comment">// Actualiser le tampon,Envoyer du contenu au navigateur</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is the new output after cleaning the buffer."</span></span><span>;
</span></span>

2. Désactiver la fermeture du tampon

Si vous souhaitez que le tampon continue de fonctionner et assurez-vous que la sortie du contenu ultérieur se déroule bien, évitez d'appeler OB_END_CLEAN ou OB_END_FLOSH , ces deux fonctions fermeront le tampon.

 <span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Allumez le tampon de sortie</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is the first output."</span></span><span>;

</span><span><span class="hljs-title function_ invoke__">ob_clean</span></span><span>(); </span><span><span class="hljs-comment">// Effacer le tampon</span></span><span>

</span><span><span class="hljs-comment">// Si vous appelezob_end_clean()ouob_end_flush(),Le tampon sera fermé,Le contenu ultérieur ne peut pas être sorti。</span></span><span>
</span><span><span class="hljs-comment">// Alors n&#39;appelez pas ces fonctions,Assurez-vous que le tampon continue d&#39;être allumé。</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is the second output after cleaning."</span></span><span>;
</span></span>

3. Assurez-vous qu'il n'y a pas d'interférence de contenu antérieure

Si la sortie précédente a été envoyée au navigateur (par exemple via ob_end_flush () ), le fonctionnement de la compensation du tampon ne sera pas valide. Alors, assurez-vous que rien n'a été sorti avant de nettoyer le tampon.

 <span><span><span class="hljs-comment">// Si le tampon n&#39;est pas activé,La sortie du contenu sera immédiatement envoyée au navigateur。</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Allumer le tampon</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Initial content."</span></span><span>;

</span><span><span class="hljs-title function_ invoke__">ob_clean</span></span><span>(); </span><span><span class="hljs-comment">// Effacer le tampon</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_flush</span></span><span>(); </span><span><span class="hljs-comment">// Actualiser le tampon</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Content after cleaning the buffer."</span></span><span>; </span><span><span class="hljs-comment">// Sortie normale</span></span><span>
</span></span>

4. Vérifiez le paramètre Output_Buffering

L'élément de configuration Output_Buffering de PHP détermine si PHP permet la mise en mémoire tampon de sortie. Si la tampon de sortie est désactivée dans le fichier php.ini , OB_CLEAN ne fonctionne pas correctement. Dans ce cas, assurez-vous que l'élément de configuration Output_Buffering de PHP est "ON" ou la taille du tampon appropriée.

 <span><span><span class="hljs-attr">output_buffering</span></span><span> = </span><span><span class="hljs-literal">On</span></span><span>
</span></span>

Résumer

Après avoir utilisé OB_CLEAN pour nettoyer le tampon de sortie, assurez-vous que le contenu de sortie peut être affiché normalement. La clé est de gérer l'état du tampon. L'appel OB_FLOSH peut garantir que le contenu après effacer le tampon est correctement envoyé au navigateur et éviter les opérations d'arrêt du tampon inutiles. De plus, assurez-vous qu'aucun contenu n'a été sorti avant de nettoyer le tampon, afin de ne pas affecter l'affichage normal des sorties suivantes. Suivez simplement ces étapes pour vous assurer que le contenu de sortie du script PHP peut être affiché normalement comme prévu lors de l'utilisation du tampon de sortie.