Bei der täglichen PHP -Entwicklung stoßen wir häufig auf Probleme mit der Ausgangspufferung, wie z. B. verstümmelter Code auf der Seite, Ausgabenausnahmen oder Header wurden gesendet. Zu diesem Zeitpunkt ist es sehr wichtig, den Status des Ausgabescache im aktuellen Skript schnell anzusehen.
Die Funktion OB_LIST_HANDLERS () ist ein sehr praktisches Gerät, das uns helfen kann, auf einen Blick zu verstehen, der Ausgabepuffer funktionieren.
OB_LIST_HANDLERS () ist eine integrierte Funktion in PHP. Es gibt ein Array zurück, in dem die Prozessornamen (Handler -Namen) aller aktuell aktiven Ausgabepuffer aufgeführt sind.
Diese Prozessoren können manuell von ob_start () manuell gestartet werden oder sie können automatisch von PHP selbst oder einigen Erweiterungen (z. B. GZIP -Komprimierung) registriert werden.
Offizielle Dokumentenreferenz: https://www.gitbox.net/manual/zh/function.ob-list-handlers.php
Tatsächlich ist es sehr einfach zu verwenden, der Beispielcode lautet wie folgt:
<?php
// Starten Sie einen einfachen Ausgangspuffer
ob_start();
// Starten Sie einen weiteren Ausgangspuffer mit Rückruffunktion
ob_start(function ($buffer) {
return strtoupper($buffer);
});
// verwenden ob_list_handlers Überprüfen Sie den aktuellen Pufferstatus
print_r(ob_list_handlers());
// Alle Ausgangspuffer reinigen und ausschalten
while (ob_get_level() > 0) {
ob_end_flush();
}
?>
Das Ausgangsergebnis ist ähnlich:
Array
(
[0] => Closure
[1] => default output handler
)
Wie Sie sehen können, bedeutet Verschluss , dass eine anonyme Funktion den Pufferinhalt übernimmt und der Standardausgangshandler der Standardausgangsprozessor von PHP ist.
Beim Debuggen großer Projekte, insbesondere von Websites, die komplexe Vorlagenmotoren, Bibliotheken von Drittanbietern oder die Aktivierung der Gzip-Komprimierung betreffen, wie beispielsweise:
Content Management System (CMS)
E-Commerce-Plattform
Die API -Schnittstelle gibt die Datenvorverarbeitung zurück
Sie können den folgenden Code in die Schlüsselposition des Skripts einfügen und ihn in Echtzeit anzeigen:
<?php
if (!function_exists('debug_ob_handlers')) {
function debug_ob_handlers() {
echo '<pre>';
print_r(ob_list_handlers());
echo '</pre>';
}
}
// Irgendwo debuggen
debug_ob_handlers();
?>
Dies kann schnell feststellen, ob eine unerwartete Pufferung vorliegt, z.
OB_LIST_HANDLERS () listet nur die aktiven Prozessoren auf und erzählt Ihnen den spezifischen Inhalt in jedem Puffer nicht.
Wenn im Skript keine Ausgabepufferung aktiviert ist, wird ein leeres Array zurückgegeben.
Wenn einige Erweiterungen (z. B. ZLIB ) aktiviert sind, können automatisch zusätzliche Ausgangsprozessoren wie OB_GZHandler hinzugefügt werden, und Sie müssen vorsichtig mit Konflikten umgehen.
OB_LIST_HANDLERS () ist eine leichte, aber sehr praktische Funktion, die die Positionierungsgeschwindigkeit beim Debuggen von Ausgabenpufferproblemen erheblich verbessern kann.
Es wird empfohlen, dass jeder PHP-Entwickler es beherrscht und bei Bedarf flexibel verwendet, insbesondere wenn es sich um komplexe Ausgabestreams handelt oder schwer zu stehende Probleme debuggte.