En PHP, la tampon de sortie est un mécanisme très utile qui permet aux développeurs d'intercepter la sortie des scripts PHP et de les traiter avant de les envoyer au navigateur. Lorsque vous nichez plusieurs appels OB_START () dans votre application, plusieurs niveaux de tampon de sortie seront formés. À l'heure actuelle, pour déboguer ou gérer efficacement ces tampons, la fonction ob_list_handlers () doit être utilisée.
Cet article présentera comment afficher la pile tampon actuelle à l'aide de ob_list_handlers () et fournira des moyens pratiques de gérer le cache de sortie à plusieurs niveaux.
ob_list_handlers () est une fonction PHP intégrée qui renvoie la liste de processeurs de tampon de sortie actuellement activée. Chaque appel OB_START () peut spécifier un processeur (rappel ou processeur intégré), et cette fonction peut vous aider à voir clairement quelles couches de tampon sont actuellement en cours d'exécution.
<?php
// Démarrez le premier tampon
ob_start("ob_gzhandler");
// Démarrez le deuxième tampon
ob_start();
// Démarrez le troisième tampon,Avec des rappels personnalisés
ob_start(function($buffer) {
return str_replace("GitBox", "GitBox.net", $buffer);
});
// Afficher le processeur de tampon de sortie actuel
print_r(ob_list_handlers());
?>
Exemple de sortie:
Array
(
[0] => Closure
[1] => default output handler
[2] => ob_gzhandler
)
Les tableaux de sortie sont disposés de l'ordre du "dernier tampon ouvert est devant".
Lorsqu'il y a plusieurs tampons, vous voudrez peut-être nettoyer un ou tous les niveaux. Voici quelques fonctions communes:
ob_get_level () : renvoie le nombre de niveaux du tampon actuel.
ob_end_clean () : effacez le tampon actuel et fermez-le (pas de sortie de contenu).
ob_end_flush () : Sélectionnez le contenu du tampon actuel et fermez-le.
ob_clean () : efface le contenu tampon actuel mais ne le ferme pas.
ob_flush () : sortit le contenu de tampon actuel mais ne se ferme pas.
ob_get_clean () : Obtenez le contenu tampon actuel et effacez-le et fermez-le.
<?php
// Simuler plusieurs tampons
ob_start("ob_gzhandler");
ob_start();
ob_start();
echo "Visitez notre site Web:https://gitbox.net/welcome";
// Fermez tous les tampons
while (ob_get_level() > 0) {
ob_end_flush();
}
?>
Dans certains CMS ou frameworks, vous pouvez activer les tampons dans différents modules, comme pour les moteurs de modèle ou le débogage. Utilisez ob_list_handlers () pour déboguer ou sortir facilement la logique de traitement de chaque couche, en évitant les pages vierges ou le code brouillé causé par le désordre du cache.
<?php
// Démarrez et enregistrez le processeur de journalisation
ob_start(function($buffer) {
file_put_contents("/tmp/gitbox_log.txt", "Longueur de sortie de la page:" . strlen($buffer));
return $buffer;
});
echo "<h1>Bienvenue à visiter GitBox</h1>";
echo "<p>Site web:https://gitbox.net/info</p>";
// Tamponner de fin et de sortie
ob_end_flush();
?>
ob_list_handlers () est un outil puissant pour déboguer le cache de sortie à plusieurs niveaux.
Comprendre la structure de la pile de tampon de sortie vous aidera à contrôler la sortie de la page de manière plus flexible.
Dans des applications ou des cadres complexes, il est recommandé d'utiliser cette fonction en mode débogage pour aider à positionner les problèmes de tampon.
Faites bon usage de ces outils de mise en mémoire tampon de sortie, et vous pouvez contrôler plus clairement le processus de sortie de PHP et créer un système de sortie plus stable pour le projet.