Position actuelle: Accueil> Derniers articles> Quelle est la différence entre les fonctions OB_END_CLEAN et OB_FLOSH? Quand dois-je les utiliser en combinaison?

Quelle est la différence entre les fonctions OB_END_CLEAN et OB_FLOSH? Quand dois-je les utiliser en combinaison?

gitbox 2025-06-23

Quelle est la différence entre les fonctions OB_END_CLEAN et OB_FLOSH? Quand dois-je les utiliser en combinaison?

Dans PHP, un tampon de sortie est un concept important qui stocke temporairement le contenu envoyé au navigateur. PHP fournit de nombreuses fonctions pour contrôler le comportement des tampons de sortie, où ob_end_clean () et ob_flush () sont deux fonctions couramment utilisées qui sont généralement utilisées pour nettoyer ou rincer le tampon de sortie. Bien qu'ils se ressemblent, leurs fonctions et leurs scénarios d'utilisation sont nettement différents.

Fonction OB_END_CLEAN ()

La fonction OB_END_CLEAN () est utilisée pour fermer le tampon de sortie actuel et rejeter le contenu dans le tampon. C'est-à-dire qu'après avoir appelé cette fonction, le contenu du tampon sera jeté et la page ne sortira aucun contenu. Ceci est généralement utilisé dans certains cas où nous devons annuler le tampon sans vouloir qu'ils apparaissent sur le navigateur.

Utilisez des scénarios :

  • Lorsque vous devez modifier ou traiter le contenu de sortie mais ne pas vouloir envoyer le contenu dans le tampon actuel au navigateur, vous pouvez utiliser ob_end_clean () .

  • Si vous constatez que le contenu n'a pas besoin d'être sorti une fois le tampon activé, ou si vous devez décider de sortir en fonction de certaines conditions, vous pouvez appeler cette fonction pour effacer le tampon.

Exemple de code :

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

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This content will be discarded."</span></span><span>;  </span><span><span class="hljs-comment">// Contenu en cache</span></span><span>

</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();  </span><span><span class="hljs-comment">// Jeter le contenu du tampon,Pas de sortie</span></span><span>

</span><span><span class="hljs-comment">// Le texte ci-dessus ne sera pas affiché sur la page</span></span><span>
</span></span>

Fonction ob_flush ()

La fonction ob_flush () est utilisée pour envoyer immédiatement le contenu du tampon actuel au navigateur, mais ne ferme pas le tampon. Il publie simplement les données du tampon au client, et le tampon existe toujours, et vous pouvez continuer à écrire des données sur le tampon.

Utilisez des scénarios :

  • Si vous souhaitez produire des données dans le tampon dans le navigateur instantanément pendant le traitement, mais que vous souhaitez conserver le tampon afin que vous puissiez continuer à y ajouter des données, vous pouvez utiliser ob_flush () .

  • ob_flush () est souvent utilisé pour gérer les scénarios de sortie en temps réel, tels que la génération de rapports dynamiquement ou les mises à jour de la barre de progression.

Exemple de code :

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

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This content will be flushed to the browser."</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-comment">// La page affichera immédiatement le texte ci-dessus,Le contenu ultérieur sera toujours tamponné</span></span><span>
</span></span>

La différence entre ob_end_clean () et ob_flush ()

Bien que ob_end_clean () et ob_flush () soient les deux fonctions liées aux tampons de sortie, ils se comportent différemment:

  1. Traitement du tampon :

    • ob_end_clean () rejette tout dans le tampon et ferme le tampon.

    • ob_flush () sortira le contenu dans le tampon au navigateur, mais ne fermera pas le tampon. Le tampon existe toujours et vous pouvez continuer à écrire le contenu.

  2. Résultat de sortie :

    • ob_end_clean () ne sortira rien car il effacera les données du tampon.

    • ob_flush () publiera immédiatement le contenu dans le tampon actuel au navigateur.

Quand les utiliser en combinaison?

Dans le développement réel, ob_end_clean () et ob_flush () sont parfois utilisés en combinaison pour répondre aux besoins spécifiques. Par exemple, si vous devez traiter une grande quantité de données ou de contenu dynamique et que vous souhaitez publier un contenu du navigateur de l'utilisateur en temps opportun, mais ne souhaitez pas que certains contenus soient sortis, vous pouvez utiliser leur combinaison:

  1. Sortie de phase : lors de la génération de rapports ou du traitement des fichiers volumineux, vous pouvez utiliser ob_flush () pour actualiser un contenu, et ob_end_clean () pour rejeter un contenu indésirable.

  2. Nettoyez un contenu inutile : pendant le processus de sortie, si vous constatez qu'un contenu ne répond pas aux attentes et doit être jeté, vous pouvez d'abord utiliser ob_flush () pour sortir le contenu préparé, puis utiliser ob_end_clean () pour rejeter la pièce restante.

Exemple de code:

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

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This content will be flushed."</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-comment">// Certains contenus ultérieurs peuvent ne pas nécessiter de sortie</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();  </span><span><span class="hljs-comment">// Jeter le contenu de tampon indésirable ultérieur</span></span><span>

</span><span><span class="hljs-comment">// La page sera affichée“ This content will be flushed.”</span></span><span>
</span></span>

Résumer

  • ob_end_clean () est utilisé pour rejeter le contenu dans le tampon de sortie et fermer le tampon.

  • ob_flush () est utilisé pour rincer le contenu dans le tampon de sortie au navigateur, mais ne ferme pas le tampon.

En développement, quelle méthode choisir dépend de ce que vous souhaitez réaliser. Si vous devez rejeter le contenu dans le tampon, vous pouvez utiliser ob_end_clean () ; Si vous souhaitez conserver le tampon et sortir le contenu du navigateur, vous pouvez utiliser ob_flush () . Dans certains scénarios, vous pouvez les utiliser en combinaison pour un contrôle de sortie plus flexible.