Position actuelle: Accueil> Derniers articles> Quelle est la différence entre Ob_flush et Flush en PHP? Analyse de comparaison d'utilisation

Quelle est la différence entre Ob_flush et Flush en PHP? Analyse de comparaison d'utilisation

gitbox 2025-06-24

1. Concepts de base

Dans PHP, le mécanisme de tampon de sortie est utilisé pour mettre en cache la sortie générée par le script, et il n'est pas envoyé au navigateur tant que le script n'est pas exécuté. Il y a deux principaux avantages à procéder:

  1. Vous pouvez contrôler lorsque le contenu est sorti afin qu'un traitement soit effectué lorsque la page est rendue.

  2. Dans certains cas, les performances peuvent être améliorées et le nombre d'interactions avec le navigateur peut être réduit.

ob_flush () :

ob_flush () est une fonction de tampon de sortie qui envoie le contenu du tampon de sortie au navigateur, alors qu'il ne dégage pas le contenu du tampon. Par conséquent, après l'appel ob_flush () , le contenu dans le tampon est toujours conservé et peut être continué à être utilisé.

flush () :

Flush () est une fonction utilisée pour forcer actualiser le tampon de sortie du système. Il essaie de tout envoyer au navigateur, mais contrairement à ob_flush () , il n'implique pas le tampon de sortie de PHP, il rince uniquement le tampon interne de PHP. Lorsque Flush () est appelé, PHP pousse le contenu dans le tampon vers le navigateur, en attendant que l'utilisateur voient ces données.


2. La différence entre ob_flush () et flush ()

Bien que ob_flush () et flush () puissent envoyer une sortie au navigateur, leurs scénarios et effets d'utilisation sont différents, les différences spécifiques sont les suivantes:

caractéristiques ob_flush () flush()
Objet d'action Tampon de sortie PHP Tampon de sortie du système
S'il faut effacer le tampon Ne pas nettoyer le tampon Effacer le tampon
S'il faut s'appuyer sur la tampon de sortie pour activer Dépendre du mécanisme de tampon de sortie Aucune dépendance à l'égard du mécanisme de tampon de sortie
Scénarios courants Fonctionnement de tampon de sortie, généralement utilisé avec ob_start () Forcer un actualisation et une sortie vers le navigateur, souvent utilisés pour les scripts de longue date
  • ob_flush () est utilisé pour envoyer le contenu dans le tampon au navigateur lorsque le tampon de sortie PHP est activé, et le tampon lui-même n'est pas effacé.

  • Flush () est une fonction de rafraîchissement de sortie au niveau du système qui envoie le contenu tampon au navigateur, adapté aux situations où le mécanisme de tampon de sortie PHP ne dépend pas.


3. Exemples et applications

1. Exemple ob_flush ()

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Allumez la tampon de sortie</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Sortie de données de première partie,Attendre l&#39;envoi..."</span></span><span>;

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

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"La deuxième partie de la sortie de données,Afficher immédiatement à l&#39;utilisateur。"</span></span><span>;

</span><span><span class="hljs-comment">// Script final</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Dans l'exemple ci-dessus, ob_start () permet le mécanisme de tampon de sortie. ob_flush () sortira les données dans le tampon vers le navigateur, mais n'effacera pas le tampon, de sorte que la deuxième partie de la sortie continuera d'être tamponnée jusqu'à la fin du script.

2. Flush () Exemple

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Commencer à traiter les données..."</span></span><span>;

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

</span><span><span class="hljs-comment">// Simuler les tâches de longue date</span></span><span>
</span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">2</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Achèvement de la tâche。"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Dans cet exemple, Flush () force le tampon de sortie pour permettre au navigateur de recevoir immédiatement le contenu de "Démarrer les données de traitement ...", et la "tâche complète" suivante. sera affiché après 2 secondes. Cette méthode convient particulièrement aux scénarios où les utilisateurs doivent percevoir des progrès en temps réel.


4. Scénarios et applications communes

  1. Scripts de longue date (comme le téléchargement, le traitement de fichiers)
    Si vous effectuez une tâche qui prend beaucoup de temps à terminer (comme le téléchargement de fichiers ou le téléchargement), vous pouvez utiliser ob_flush () et flush () pour faire en sorte que l'utilisateur ressente les progrès et éviter les délais de navigateur.

  2. Push de données en temps réel <br> Par exemple, dans l'affichage de données en temps réel, le système de chat et d'autres scénarios, Flush () est utilisé pour s'assurer que les données peuvent être poussées vers le navigateur de l'utilisateur en temps réel et éviter que les utilisateurs ne consacrent des retards ou des pages vides.

  3. Optimisation de rendu de page <br> Pendant le processus de rendu de page, l'utilisation d'OB_Flush () et Flush () en combinaison permet aux utilisateurs de voir une partie du contenu de la page pendant que le script s'exécute, améliorant ainsi l'expérience utilisateur.