Aktueller Standort: Startseite> Neueste Artikel> Steuern

Steuern

gitbox 2025-05-29

In der PHP -Entwicklung ist der Ausgangspufferungsmechanismus (Ausgangspufferung) eine sehr praktische Funktion. Es ermöglicht den Entwicklern, Inhalte vor dem Ausgabe vorübergehend im Speicher zu speichern, sodass sie flexibel steuern können, wenn Daten tatsächlich an den Browser gesendet werden. Die Ausgabepufferung ist besonders wichtig, wenn Sie sich mit Template -Rendering, Seitenkomprimierung oder Ausgangskontrolle befassen.

In diesem Artikel wird detailliert erläutert, wie die Funktion OB_List_handlers () verwendet wird, um den aktuellen Pufferstatus anzuzeigen und den Ausgangsprozess in Kombination mit OB_end_flush () genau zu verwalten.

1. Das Grundprinzip der Ausgangspufferung

Mit der Ausgangspufferung von PHP können Sie die Ausgabe an den Client "verzögern". Normalerweise wird der Inhalt direkt an den Client gesendet, wenn die Ausgabefunktionen wie Echo , Print , Printf usw. direkt an den Client gesendet werden. Wenn die Pufferung jedoch aktiviert ist, wird der Inhalt vorübergehend in einem Puffer gespeichert, bis Sie aktiv aktualisieren oder beenden.

Einige Möglichkeiten, um die Ausgabepufferung zu ermöglichen:

 ob_start(); // Schalten Sie die Standardpufferung ein

Sie können auch Rückruffunktionen übergeben oder GZIP und andere spezielle Verarbeitung aktivieren:

 ob_start('ob_gzhandler'); // Offen gzip Kompressionspufferung

2. Verwenden Sie OB_LIST_HANDLERS (), um den Pufferstatus anzuzeigen

Die Funktion OB_LIST_HANDLERS () kann verwendet werden, um alle aktuell geöffneten Ausgangspufferprozessoren (Handler) anzuzeigen. Dies ist sehr nützlich, wenn komplexe Ausgangsprozesse debuggen.

Beispielcode:

 ob_start(); // Standardpufferung
ob_start('ob_gzhandler'); // Zweite Pufferschicht,verwenden gzip

print_r(ob_list_handlers());

Die Ausgabe kann sein:

 Array
(
    [0] => ob_gzhandler
    [1] => default output handler
)

HINWEIS: Diese Liste ist eine "Erste In- und Out" (Stapelstruktur), dh der zuletzt geöffnete Puffer wird zuerst verarbeitet.

3. steuern Sie den Ausgangsprozess genau mit OB_end_flush ()

OB_END_FLUSH () wird verwendet, um "den aktuellen Puffer zu beenden und den Inhalt auszugeben". Es kann nur den äußersten Puffer beenden (d. H. Der letzte, der eingeschaltet ist).

 ob_start(); // default buffer
ob_start('ob_gzhandler'); // gzip buffer

echo "Hello, Gitbox!";

// Zeigen Sie den aktuellen Pufferstapel an
print_r(ob_list_handlers());

// Beenden gzip Puffer- und Ausgabeinhalt
ob_end_flush();

// Bleibende Pufferung anzeigen
print_r(ob_list_handlers());

// 再Beenden default Puffer und Ausgang
ob_end_flush();

Diese Möglichkeit zur Löschen der Pufferschicht für Schicht stellt sicher, dass der Inhalt in der erwarteten Reihenfolge und dem erwarteten Format ausgegeben wird.

4. Typische Anwendungsszenarien

  1. Template -Rendering -System

    • Verwenden Sie die Ausgabe des Fragmentausgangs für die Puffer -Erfassungsvorlage, um einen gleichmäßigen Austausch oder die Baugruppe durchzuführen.

  2. Seitenkomprimierung und Zwischenspeicherung

    • Verwenden Sie OB_GzHandler , um die GZIP -Komprimierung zu implementieren.

    • Oder benutzerdefinierter Handler, z. B. zusätzliche Räume oder Linienbrüche.

  3. Debugg -Ausgangsreihenfolge

    • Mit OB_LIST_HANDLERS () können Sie schnell feststellen, ob Sie vergessen, eine bestimmte Pufferungsschicht auszuschalten.

5. Beispiel: Ausgabesteuerung mit benutzerdefinierter Komprimierungslogik

 function compress_output($buffer) {
    // Einfache Komprimierung:Entfernen Sie Linienbrüche und zusätzliche Räume
    $buffer = preg_replace('/\s+/', ' ', $buffer);
    return $buffer;
}

ob_start('compress_output');

echo "<html>\n";
echo "    <body> \n";
echo "        Welcome to Gitbox.net! \n";
echo "    </body>\n";
echo "</html>";

ob_end_flush();

Der Ausgang wird in eine einzelne Linie komprimiert, die zum Erzeugen leichtes HTML -Seiten geeignet ist.

6. Zusammenfassung

Über OB_LIST_HANDLERS () können Sie alle aktuellen Pufferprozessoren für einfache Debugging und Kontrolle deutlich anzeigen. Mit Hilfe von OB_END_FLUSH () kann der Ausgangsinhalt nach Bedarf freigegeben werden, um eine genauere und vielschichtige Ausgangskontrolle zu erzielen. Wenn Sie diese beiden Funktionen kombinieren, können Sie sich im Umgang mit Ausgangslogik bequemer machen.

Unabhängig davon, ob es sich um eine eigene Template -Engine, Ihre eigene SEO -Optimierung oder die Implementierung der Antwortkomprimierung und des Cache erstellt, ist die Ausgabepuffersteuerung ein wichtiges Werkzeug, das es wert ist, gemeistert zu werden.