Aktueller Standort: Startseite> Neueste Artikel> Wie implementieren Sie die Ausgabepufferung mit OB_Start in PHP? Detaillierte Schrittanalyse

Wie implementieren Sie die Ausgabepufferung mit OB_Start in PHP? Detaillierte Schrittanalyse

gitbox 2025-09-11

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Dieser Teil hat nichts mit dem Inhalt des Artikels zu tun</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Willkommen bei diesem Tutorial zu lesen!\n"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

In der PHP -Entwicklung müssen wir die Ausgabe manchmal verarbeiten, bevor wir den Inhalt an den Browser senden, z. B. Komprimieren, Zwischenspeichern, Änderungen des HTML -Inhalts usw. OB_START () ist eine sehr leistungsstarke Ausgangspufferfunktion, die von PHP bereitgestellt wird, die den Entwicklern helfen kann, den Ausgangsstrom flexibel zu steuern. In diesem Artikel werden Sie detaillierter zur Implementierung von OB_Start in PHP zur Implementierung der Ausgabebufferung eingehen.

1. Was ist Ausgangspufferung

Standardmäßig sendet PHP Inhalte sofort an den Browser, wenn Ausgabenausgaben wie Echo oder Druck ausgeführt werden. Durch die Ausgangspufferung kann PHP zuerst die Ausgabe im Puffer speichern, bis der Puffer gelöscht oder gesendet wird. Dies ermöglicht den Entwicklern:

  • Ändern Sie die Ausgabe, bevor Sie sie an den Browser senden.

  • Steuert die Ausgangsreihenfolge.

  • Implementieren Sie die Inhaltskomprimierung oder den Caching -Mechanismus.

  • Vermeiden Sie "bereits gesendete" Fehler.

2. Grundnutzung

In PHP ist es sehr einfach, die Ausgangspufferung mit ob_start () zu aktivieren:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Ausgangspufferung einschalten</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Dieser Abschnitt wird zuerst im Puffer gespeichert,Anstatt sofort auszugeben。"</span></span><span>;

</span><span><span class="hljs-comment">// Holen Sie sich gepufferte Inhalte</span></span><span>
</span><span><span class="hljs-variable">$content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>(); 
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Der Inhalt des Puffers ist: "</span></span><span> . </span><span><span class="hljs-variable">$content</span></span><span>;

</span><span><span class="hljs-comment">// Klären und die Pufferung ausschalten</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>(); </span><span><span class="hljs-comment">// Keine gepufferte Inhaltsausgabe,Direkt klären</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

erklären

  1. OB_Start () : Ausgabepufferung starten.

  2. ob_get_contents () : Holen Sie sich den Inhalt des aktuellen Puffers.

  3. OB_END_CLEAN () : Löschen Sie den Puffer und schließen Sie den Puffer, ohne den Inhalt auszugeben.

  4. Wenn Sie gepufferte Inhalte ausgeben möchten, anstatt ihn zu löschen, können Sie ob_end_flush () verwenden.

3.. Verwenden Sie Rückruffunktionen, um gepufferte Inhalte zu verarbeiten

ob_start () kann eine Rückruffunktion akzeptieren, mit der wir die Ausgabe verarbeiten können, bevor sie an den Browser gesendet wird. Zum Beispiel Kompress HTML:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Rückruffunktionskomprimierung HTML</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">compress_output</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$buffer</span></span></span><span>) {
    </span><span><span class="hljs-variable">$search</span></span><span> = [</span><span><span class="hljs-string">'/&gt;\s+/'</span></span><span>,</span><span><span class="hljs-string">'/\s+&lt;/'</span></span><span>,</span><span><span class="hljs-string">'/\s{2,}/'</span></span><span>];
    </span><span><span class="hljs-variable">$replace</span></span><span> = [</span><span><span class="hljs-string">'&gt;'</span></span><span>,</span><span><span class="hljs-string">'&lt;'</span></span><span>,</span><span><span class="hljs-string">' '</span></span><span>];
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-variable">$search</span></span><span>, </span><span><span class="hljs-variable">$replace</span></span><span>, </span><span><span class="hljs-variable">$buffer</span></span><span>);
}

</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(</span><span><span class="hljs-string">"compress_output"</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;html&gt;   &lt;body&gt;    &lt;h1&gt;  Willkommen PHP Ausgangspufferung  &lt;/h1&gt;  &lt;/body&gt; &lt;/html&gt;"</span></span><span>;

</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// Den verarbeiteten Inhalt ausgeben</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

In diesem Beispiel beseitigt die Rückruffunktion compress_output unnötige Rohlinge und Zeilenumbrüche in HTML, wodurch die Menge der übertragenen Daten verringert wird.

4. Multi-Level-Pufferung und Nistgebrauch

PHP unterstützt mehrstufige Pufferung, was bedeutet, dass ein anderer Puffer in einem Puffer eingeschaltet werden kann:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Erste Schicht der Pufferung"</span></span><span>;

</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Zweite Pufferschicht"</span></span><span>;

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Zweite Pufferschicht内容: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// 输出Zweite Pufferschicht内容</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Erste Schicht der Pufferung内容: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// 输出Erste Schicht der Pufferung内容</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Multi-Level-Pufferung kann verwendet werden, um verschiedene Ausgänge in Schichten zu verarbeiten, z. B. verschiedene Cache-Strategien für verschiedene Module.

5. gemeinsame Vorsichtsmaßnahmen

  1. Senden Sie keine Headerinformationen, nachdem die Ausgabe gesendet wurde : Die Verwendung der Ausgabepufferung kann den Fehler "bereits gesendet" vermeiden.

  2. Cache -Steuerung : Wenn Sie die Seite zwischenspeichern oder komprimieren müssen, stellen Sie sicher, dass der Puffer nicht zu früh gelöscht wird.

  3. Leistungsüberlegungen : Große Dateipuffer können Speicher belegen und müssen mit Vorsicht verwendet werden.

6. Zusammenfassung

Durch OB_Start () können PHP -Entwickler den Zeitpunkt des Ausgangs und die Verarbeitung von Inhalten vollständig steuern. Unabhängig davon, ob es sich um Seitenkomprimierung, Caching -Richtlinien oder die Verhinderung von Headerinformationsfehlern handelt, ist die Ausgabepufferung ein sehr praktisches Werkzeug. Nach dem Mastering von ob_start () und zugehörigen Funktionen (z. B. ob_get_contents () , ob_end_flush () , ob_end_clean () ) wird Ihre Fachleitungen zur Verwaltung von PHP -Ausgaben erheblich verbessert.