Dans PHP Development, ob_start () et ob_end_flush () se trouvent deux fonctions de tampon de sortie très pratiques. En utilisant ces deux fonctions raisonnablement, les développeurs peuvent gérer plus efficacement la sortie de la page, optimiser les performances et même gérer des tâches telles que le cache. Cet article explorera en profondeur la façon dont ces deux fonctions sont utilisées et comment elles fonctionnent ensemble pour vous aider à mieux comprendre le mécanisme tampon de sortie.
Le mécanisme tampon de sortie fait référence au fait que lors de l'exécution des scripts PHP, la sortie de contenu sur la page est temporairement stockée en mémoire puis envoyée au navigateur de manière uniformément après l'exécution du script. Par défaut, PHP sera envoyé immédiatement au navigateur lorsque chaque ligne de contenu de sortie sera exécutée par le script. Lorsque le tampon de sortie est activé, toutes les sorties seront stockées dans le tampon en premier et le contenu ne sera pas envoyé au navigateur tant que le tampon ne sera pas effacé ou fermé.
ob_start () est une fonction utilisée pour démarrer la tampon de sortie. Après avoir appelé cette fonction, tous les contenus de sortie (tels que Echo , Print , HTML TAGS, etc.) seront mis en cache en mémoire et ne seront pas envoyés immédiatement au navigateur. Cela offre une flexibilité pour le traitement ultérieur, tel que la modification du contenu et la sortie de la sortie avant la sortie de la page.
Exemple de code:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Démarrer la tampon de sortie</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Hello, World!"</span></span><span>; </span><span><span class="hljs-comment">// Le contenu de sortie est mis en cache en mémoire</span></span><span>
</span><span><span class="hljs-comment">// Jusqu'à ce qu'on appelle ob_end_flush(),Le contenu sera envoyé au navigateur</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
ob_end_flush () est une fonction utilisée pour fermer le tampon de sortie actuel et envoyer le contenu du tampon au navigateur. Lorsque cette fonction est appelée, PHP sortira toutes les données du tampon au navigateur et terminera le mécanisme tampon. Si vous souhaitez terminer le tampon de sortie à mi-chemin et sortir son contenu, vous pouvez utiliser cette fonction.
Exemple de code:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Démarrer la tampon de sortie</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is buffered content."</span></span><span>; </span><span><span class="hljs-comment">// Le contenu est mis en cache</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// Éteignez la mise en mémoire tampon et la sortie</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
La combinaison de ob_start () et ob_end_flush () est le cœur de la mise en mémoire tampon de sortie. Grâce à la coopération de ces deux fonctions, les développeurs peuvent obtenir une gestion de contenu plus efficace. Par exemple, dans certains cas où une grande quantité de sortie est requise, la sortie peut être mise en cache en mémoire, puis envoyée en même temps pour éviter les opérations fréquentes d'E / S et améliorer la vitesse de chargement des pages.
Vous pouvez modifier le contenu dans le tampon et apporter des modifications avant d'appeler ob_end_flush () . Ceci est très utile pour générer dynamiquement du contenu et optimiser la sortie.
Exemple de code:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Démarrer la tampon de sortie</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Original content"</span></span><span>; </span><span><span class="hljs-comment">// Contenu de sortie initial</span></span><span>
</span><span><span class="hljs-variable">$content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>(); </span><span><span class="hljs-comment">// Obtenez du contenu tamponné</span></span><span>
</span><span><span class="hljs-comment">// Apporter des modifications au contenu</span></span><span>
</span><span><span class="hljs-variable">$content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_replace</span></span><span>(</span><span><span class="hljs-string">"Original"</span></span><span>, </span><span><span class="hljs-string">"Modified"</span></span><span>, </span><span><span class="hljs-variable">$content</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>(); </span><span><span class="hljs-comment">// Effacer le tampon et terminer le tampon</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$content</span></span><span>; </span><span><span class="hljs-comment">// Sortir le contenu modifié</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
La tampon de sortie peut être utilisée non seulement pour modifier le contenu, mais aussi à d'autres fins d'optimisation. Par exemple, compresser la sortie de la page, retarder le chargement des données ou contrôler l'envoi de contenu mis en cache, etc. Voici quelques scénarios d'utilisation courants:
Si vous devez tout sortir à la fois une fois le script terminé, vous pouvez utiliser ob_start () pour tamponner la sortie jusqu'à l'exécution du script.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-comment">// Tâches de longue date</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This will be sent after all tasks are complete."</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// Sortie unifiée une fois toutes les tâches terminées</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
La combinaison de la technologie de mémoire tampon et de compression peut réduire efficacement la taille de la transmission des données et améliorer la vitesse de chargement. Après avoir activé la tampon de sortie, vous pouvez utiliser l'OB_START () de PHP et la fonction OB_GZHandler pour effectuer la compression de pages.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(</span><span><span class="hljs-string">"ob_gzhandler"</span></span><span>); </span><span><span class="hljs-comment">// Activer la compression</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is a compressed page!"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// Sortie contenu comprimé</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Lorsque vous devez sortir du contenu très complexe ou généré dynamiquement, vous pouvez utiliser le tampon de sortie pour le collecter, en évitant d'envoyer plusieurs sorties au navigateur pendant le traitement.
ob_start () et ob_end_flush () sont deux fonctions très importantes dans le mécanisme tampon de sortie PHP. Ils peuvent aider les développeurs à gérer plus efficacement la sortie de la page, à optimiser les performances et à réduire les opérations d'E / S inutiles. Grâce à une coopération raisonnable, vous pouvez réaliser diverses fonctions telles que la modification du contenu, la compression des pages, la sortie retardée, etc., pour améliorer la vitesse de réponse du site Web et l'expérience utilisateur. Pendant le processus de développement, l'utilisation de ces deux fonctions de manière flexible peut vous rendre plus confortable lors de la gestion de la sortie à grande échelle.