Aktueller Standort: Startseite> Neueste Artikel> So verfolgen Sie den Anrufstapel des Cache -Handlers mit Hilfe von OB_LIST_HANDLERS

So verfolgen Sie den Anrufstapel des Cache -Handlers mit Hilfe von OB_LIST_HANDLERS

gitbox 2025-05-20

In PHP ist die Funktion OB_LIST_HANDLERS ein Werkzeug, mit dem alle Cache -Handler im aktuellen Ausgangspuffermanager (OB) abgerufen werden können. Dadurch können Sie den Anrufstapel von Cache -Handlern verfolgen, um Ihnen zu helfen, den Ausführungsprozess von Ausgangs -Caches besser zu debugieren. In diesem Artikel wird erläutert, wie OB_LIST_HANTLERS verwendet, um den Anrufstapel von PHP -Cache -Handlern zu debuggen und einen Beispielcode bereitzustellen.

Was ist PHP -Ausgangscache?

In PHP ist Output -Cache ein Mechanismus zum vorübergehenden Speichern von Ausgabeinhalten in den Speicher, sodass Sie die Ausgabe während der Skriptausführung erfassen können, anstatt ihn direkt an den Browser zu senden. Dies ist sehr nützlich, um den Leistungsaufwand mehrerer Ausgangsvorgänge oder zur Durchführung der Inhaltsverarbeitung (wie Komprimierung, Modifikation usw.) zu verringern. PHP liefert mehrere Funktionen, um das Verhalten von Ausgangscache wie Ob_Start () , OB_end_flush () , OB_FLUSH () usw. zu steuern.

Debugug -Ausgabe -Cache mit OB_LIST_HANDLERS

Die Funktion der Funktion OB_LIST_HANDLERS ist es, alle aktuellen Ausgabes -Cache -Handler zurückzugeben. Diese Handler enthalten Cache -Handler, die von ob_start () erstellt wurden. Sie können diese Funktion verwenden, um eine Liste von Cache -Stapeln zu erhalten, um zu verstehen, wie Caches in der Reihenfolge verarbeitet werden.

Beispielcode: Verfolgung von Cache -Handler verfolgen

 <?php

// Starten Sie den Ausgangscache
ob_start();

// Fügen Sie einen benutzerdefinierten Cache -Handler hinzu
ob_start(function($buffer) {
    return strtoupper($buffer);  // Ausgang in Großbuchstaben konvertieren
});

// passieren ob_list_handlers Holen Sie sich die Liste der aktuellen Cache -Handler
$handlers = ob_list_handlers();
echo "Aktueller Cache -Handler:\n";
print_r($handlers);

// Einige Inhalte ausgeben
echo "Dies ist eine Testzeichenfolge。";

// Holen Sie sich und drucken Sie alle Handler
$handlers = ob_list_handlers();
echo "Aktueller Cache -Handler(Rufen Sie erneut an ob_list_handlers):\n";
print_r($handlers);

// Cache und Ausgabe beenden
ob_end_flush();

// Ende Cache
ob_end_clean();
?>

Code analysieren

  1. OB_Start () : Starten Sie einen Ausgangscache. Wenn kein Handler angegeben ist, verwendet PHP den Standard -Caching -Mechanismus.

  2. OB_Start (Funktion ($ Buffer) {...}) : Gibt einen benutzerdefinierten Cache -Handler an, um den Ausgangsinhalt in Großbuchstaben umzuwandeln.

  3. OB_LIST_HANDLERS () : Gibt eine Liste aller aktuellen Ausgabe -Cache -Handler zurück und kann den aktuellen zwischengespeicherten Verarbeitungsstapel anzeigen.

  4. OB_END_FLUSH () : End Cache und geben Sie den Inhalt des Puffers in den Browser aus.

  5. OB_END_CLEAN () : Ende Cache und Pufferinhalt beenden.

Im obigen Code können Sie die aktuelle Liste der Ausgabes -Cache -Handler mit OB_LIST_HANDLERS () anzeigen. Jedes Mal, wenn die Funktion aufgerufen wird, sehen Sie ein Array, das alle derzeit aktivierten Cache -Handler enthält.

Ausgangsbeispiel:

 Aktueller Cache -Handler:
Array
(
    [0] => no-processor
    [1] => closure
)

Aktueller Cache -Handler(Rufen Sie erneut an ob_list_handlers):
Array
(
    [0] => closure
)

Im obigen Beispiel sehen wir den Stapel des aktuellen Cache -Handlers. Der erste Anruf an ob_list_handlers () gibt einen Standard "No-Processor" ( No-Processor ) zurück, während der zweite Anruf den Handler zeigt, den wir selbst hinzugefügt haben ( Verschluss ). Dies bedeutet, dass sich der Cache -Stapel gemäß der Anlauforden ändert.

Verfolgung des Anrufstacks über OB_LIST_HANDLERS

In komplexen PHP -Anwendungen können mehrere Cache -Handler nacheinander aufgerufen werden. Mithilfe von OB_LIST_HANDLERS können Sie die Reihenfolge der Cache -Handler in Echtzeit anzeigen und Ihnen helfen, Cache -Probleme zu debugieren. Wenn Sie beispielsweise darauf begegnen, dass der Cache -Inhalt nicht wie erwartet verarbeitet wird, können Sie den Cache -Handler -Stack überprüfen, um zu bestätigen, ob Handler fehlen, oder die Reihenfolge der Ausführungsfehler.

Debugging -Szenario Beispiel:

Angenommen, Sie entwickeln eine PHP -Website und speichern einige dynamische Inhalte. Sie stellen jedoch fest, dass der zwischengespeicherte Inhalt nicht wie erwartet verarbeitet wird, z. B. nicht korrekt komprimiert oder geändert. An diesem Punkt können Sie OB_List_handlers () verwenden, um den Cache -Stapel auszudrucken und zu überprüfen, ob mehrere Ausgangs -Cache -Handler vorhanden sind oder einige Handler nicht korrekt angewendet werden.

 <?php
// Starten Sie einen Ausgangscache und wenden Sie mehrere Handler an
ob_start(function($buffer) {
    return strrev($buffer);  // Den Ausgangsinhalt umkehren
});
ob_start(function($buffer) {
    return strtoupper($buffer);  // Ausgang in Großbuchstaben konvertieren
});

// Zeigen Sie den aktuellen Cache -Handler an
$handlers = ob_list_handlers();
print_r($handlers);

// Ausgabeinhalt
echo "Dies ist eine Testzeichenfolge。";

// Cache und Ausgabe beenden
ob_end_flush();
?>

In diesem Beispiel zeigt OB_LIST_HANDLERS () die Reihenfolge der Inversions- und Kapitalisierungshandler. Auf diese Weise können Sie den Handler des PHP -Ausgangscache problemlos überprüfen und debuggen.