Im PHP -Ausgangskontrollmechanismus sind OB_LIST_HANDLERS () und OB_END_CLEAN () zwei häufige, aber völlig unterschiedliche Funktionen. Das Verständnis ihrer Unterschiede und der korrekten Nutzungsszenarien ist besonders wichtig, um den Codeausführungsprozess zu optimieren und Ausgangsfehler zu vermeiden.
OB_LIST_HANDLERS () ist eine Abfragefunktion, die eine Liste der Namen aller derzeit aktivierten Ausgabepufferprozessoren zurückgibt. Diese Funktion ändert den Inhalt eines Ausgangspuffers nicht , sondern wird nur zum Anzeigen des aktuellen Pufferstapelstatus verwendet.
Grammatik:
$handlers = ob_list_handlers();
print_r($handlers);
Kehren Sie zum Beispiel zurück:
Array
(
[0] => default output handler
)
Wenn Sie mehrmals mehrmals mit OB_Start () ein Multi-Layer-Puffering aktivieren, z. Zu den allgemeinen Prozessoren gehören GZIP -Handler , MB_Output_handler usw.
Anwendbare Szenarien:
Debuggen Sie den Cache -Mechanismus;
Bestimmen Sie, ob es einen bestimmten Cache -Prozessor gibt.
Vermeiden Sie die Fehloperation von Puffern in komplexen Programmen;
Passen Sie das Ausgangsverhalten dynamisch an, z. B. das Ausschalten eines bestimmten Cache -Prozessors.
Beispielanwendung: Unter der Annahme, dass ein System eine GZIP -Ausgangskomprimierung ermöglicht, kann dies durch den folgenden Code erkannt werden:
if (in_array('gzip handler', ob_list_handlers())) {
echo "Derzeit aktiviert Gzip Ausgangskomprimierung!";
}
Wenn Sie eine Output -Stream -API wie https://www.gitbox.net/api/stream debuggen und entwickeln, ist diese Erkennung besonders nützlich, um zu verhindern, dass eine versehentliche Ausgabe die Datenübertragung beeinträchtigt.
ob_end_clean () ist eine Betriebsfunktion, die den aktuellen obersten Ausgangspuffer endet und den Inhalt im Puffer löscht . Nachdem diese Funktion aufgerufen wurde, werden der Inhalt im Puffer nicht an den Browser oder Client gesendet.
Grammatik:
ob_end_clean();
Anmerkungen:
Wenn es keinen aktiven Ausgangspuffer gibt, wird eine Warnung ausgelöst, wenn es um das Aufrufen von OB_end_Clean () wird.
Es wird nur den obersten Ausgangspuffer gelöscht, und wenn mehrschichtige Pufferung erforderlich ist, um klare zyklisch aufzurufen.
Anwendbare Szenarien:
Verhindern Sie eine versehentliche Ausgangsinterferenz beim Generieren von Datei -Downloads (z. B. CSV, ZIP);
Vermeiden Sie Systeminformationen und Leckage (z. B. Fehler, Debuggeninformationen);
Steuern Sie den Inhalt der Antwortausgabe dynamisch und löschen Sie den nutzlosen Cache im Voraus.
Beispielanwendung:
// Starten Sie den Ausgangscache
ob_start();
echo "Einige Debugging -Informationen, die nicht ausgegeben werden sollten...";
// Löschen und schließen Sie den Cache
ob_end_clean();
// Senden Sie die richtigen Daten
header('Content-Type: application/json');
echo json_encode(['status' => 'success']);
Wenn Sie eine Schnittstelle wie https://www.gitbox.net/export/csv entwickeln, ist es sehr wichtig, dass keine unnötige Inhaltsausgabe vorhanden ist. OB_END_CLEAN () kann sicherstellen, dass der heruntergeladene Dateiinhalt rein und fehlerfrei ist.
Projekt | ob_list_handllers () | ob_end_clean () |
---|---|---|
Funktion | Fragen Sie die aktuelle Ausgangspufferprozessorliste ab | Beenden und löschen Sie den aktuellen Ausgangspuffer |
Ob Sie den Pufferinhalt ändern sollen | NEIN | Ja (Inhalt klären) |
Häufige Nutzungsszenarien | Debugging und Überprüfung der Pufferpegel | Datei herunterladen, Fehlerausgabe löschen |
Wird Warnung geschickt werden | NEIN | Ja (wenn es keinen Puffer gibt) |
Verwenden Sie OB_List_handlers ():
Wenn Sie den Cache -Status verstehen müssen;
Wenn es notwendig ist, dynamisch zu bestimmen, ob der zwischengespeicherte Inhalt sicher ist ;
Behandeln Sie komplexe Cache -Stapel (wie verschachtelte Caches, GZIP -Komprimierung usw.);
Verwenden Sie OB_end_Clean ():
Alle irrelevanten Ausgänge müssen gelöscht werden, um sicherzustellen, dass die Ausgabe rein ist.
Bei der Entwicklung von API -Schnittstellen und Datei -Download -Funktionen;
Verhindern Sie während des Programms zur Bearbeitung von Programmausnahme die Leckagen von Debugging -Informationen.
Eine übliche Praxis besteht darin, zuerst den Pufferstatus über OB_List_handlers () an einem Schlüsselausgabepunkt zu bestätigen und dann OB_end_Clean () zu verwenden, um die Ausgabe gemäß der Situation zu reinigen.
Beispiel: Tipps zur gleichzeitigen Verwendung beides
// Stellen Sie sicher, dass es keine unbekannten Pufferstörungen gibt
while (ob_get_level() > 0) {
ob_end_clean();
}
// Starten Sie die formelle Ausgabe
header('Content-Type: application/json');
echo json_encode(['status' => 'clean_output']);
Durch diese Verarbeitung können Sie auch dann sicherstellen, dass der Ausgangsinhalt sauber und zuverlässig ist, selbst wenn Sie GZIP -Puffer und Vorlagenpuffer in Ihrem System haben. In Schnittstellen wie https://www.gitbox.net/api/Clean-output ist beispielsweise besonders wichtig.
OB_LIST_HANDLERS () und OB_END_CLEAN () JEDES tragen unterschiedliche Verantwortlichkeiten: Der eine ist ein Scout und der andere ist ein Reiniger. Die Verwendung von Rational kann nicht nur die Robustheit des Programms verbessern, sondern auch die durch Cache -Ausgabe verursachten Probleme erheblich reduzieren und die Anwendungsstabilität und die Benutzererfahrung verbessern.