In PHP ist der Ausgangspuffer ein temporärer Speicherbereich, mit dem der Inhalt der Skriptausgabe gespeichert wird. Normalerweise sendet PHP den Seiteninhalt direkt an den Browser zur Anzeige. Wenn jedoch die Ausgabepufferung aktiviert ist, speichert PHP alle Ausgänge (z. B. HTML-, Text- oder Fehlermeldungen) im Puffer, bis der Puffer gelöscht oder das Skript ausgeführt wird. Durch die Aktivierung der Ausgangspufferung können Entwickler das Timing, die Reihenfolge und sogar die inhaltliche Änderung des Ausgangsinhalts steuern.
Die OB_Clean -Funktion wird verwendet, um den Ausgangspuffer von PHP zu löschen. Wenn Sie OB_CLEAN anrufen, löscht PHP alles im Puffer, das den Puffer nicht schließt. Der Zweck des Löschens des Puffers besteht normalerweise darin, sicherzustellen, dass die nachfolgende Ausgabe wie erwartet an den Browser gesendet werden kann.
Obwohl OB_Clean den Ausgangspuffer löschen kann, können nach der Reinigung die folgenden Probleme auftreten, wenn der Pufferstatus nicht ordnungsgemäß verwaltet wird:
Die Ausgabe wird nicht an den Browser gesendet : Wenn der Puffer nicht gespült ist ( OB_FLUSH ) oder nicht korrekt in den Browser ausgegeben wird, kann die Seite leer sein oder nichts wird angezeigt.
Die nachfolgende Ausgabe ist blockiert : Nach dem Löschen des Puffers kann der Puffer nicht wieder aktiviert oder der Pufferstatus korrekt verarbeitet wird, die nachfolgende Ausgabe kann "verworfen" oder wie erwartet nicht gesendet werden.
Der Browser erhält unvollständige Antworten : Wenn der Puffer nicht korrekt verwaltet wird, erhält der Browser möglicherweise keine vollständige HTTP -Antwort, was zum Ladefehler der Seite führt.
Um sicherzustellen, dass die nachfolgende Ausgabe nach dem Reinigen des Puffer normal angezeigt werden kann, müssen die folgenden Maßnahmen ergriffen werden:
Nach dem Aufrufen von OB_CLEAN , um den Puffer zu löschen, ist es normalerweise erforderlich, OB_FLUSH aufzurufen, um den Inhalt im Puffer an den Browser zu senden. Dies ist ein wichtiger Schritt, um sicherzustellen, dass der Inhalt ordnungsgemäß angezeigt wird.
<span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Schalten Sie den Ausgangspuffer ein</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Hello, this is some content."</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_clean</span></span><span>(); </span><span><span class="hljs-comment">// Löschen Sie den Puffer</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_flush</span></span><span>(); </span><span><span class="hljs-comment">// Aktualisieren Sie den Puffer,Senden Sie Inhalte an den Browser</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is the new output after cleaning the buffer."</span></span><span>;
</span></span>
Wenn Sie möchten, dass der Puffer weiter funktioniert und sicherstellt, dass die Ausgabe nachfolgender Inhalte reibungslos verläuft, vermeiden Sie es, OB_END_CLEAN oder OB_END_FLUSH aufzurufen, diese beiden Funktionen schließen den Puffer.
<span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Schalten Sie den Ausgangspuffer ein</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is the first output."</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_clean</span></span><span>(); </span><span><span class="hljs-comment">// Löschen Sie den Puffer</span></span><span>
</span><span><span class="hljs-comment">// Wenn Sie anrufenob_end_clean()oderob_end_flush(),Der Puffer wird geschlossen,Der nachfolgende Inhalt kann nicht ausgegeben werden。</span></span><span>
</span><span><span class="hljs-comment">// Nennen Sie diese Funktionen also nicht,Stellen Sie sicher, dass der Puffer weiterhin eingeschaltet wird。</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is the second output after cleaning."</span></span><span>;
</span></span>
Wenn die vorherige Ausgabe an den Browser gesendet wurde (z. B. über OB_end_flush () ), ist der Betrieb des Löschens des Puffers ungültig. Stellen Sie also sicher, dass vor dem Löschen des Puffers nichts ausgegeben wurde.
<span><span><span class="hljs-comment">// Wenn der Puffer nicht aktiviert ist,Die Inhaltsausgabe wird direkt an den Browser gesendet。</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Den Puffer einschalten</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Initial content."</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_clean</span></span><span>(); </span><span><span class="hljs-comment">// Löschen Sie den Puffer</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_flush</span></span><span>(); </span><span><span class="hljs-comment">// Aktualisieren Sie den Puffer</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Content after cleaning the buffer."</span></span><span>; </span><span><span class="hljs-comment">// Normaler Ausgang</span></span><span>
</span></span>
Das Ausgabe -Konfigurationselement von PHP ergibt fest, ob PHP die Ausgabepufferung ermöglicht. Wenn in der Php.ini -Datei die Ausgabepufferung deaktiviert ist, funktioniert OB_CLEAN nicht ordnungsgemäß. Stellen Sie in diesem Fall sicher, dass das Konfigurationselement von PHP output_buffering "on" oder die entsprechende Puffergröße ist.
<span><span><span class="hljs-attr">output_buffering</span></span><span> = </span><span><span class="hljs-literal">On</span></span><span>
</span></span>
Stellen Sie nach der Verwendung von OB_CLEAN zum Reinigen des Ausgangspuffer sicher, dass der Ausgangsinhalt normal angezeigt werden kann. Der Schlüssel besteht darin, den Status des Puffers zu verwalten. Das Aufrufen von OB_FLUSH kann sicherstellen, dass der Inhalt nach dem Löschen des Puffers korrekt an den Browser gesendet wird und unnötige Puffer -Abschaltvorgänge vermeiden. Stellen Sie außerdem sicher, dass vor dem Löschen des Puffers kein Inhalt ausgegeben wurde, um die normale Anzeige der nachfolgenden Ausgänge nicht zu beeinflussen. Befolgen Sie einfach die folgenden Schritte, um sicherzustellen, dass der Ausgangsinhalt des PHP -Skripts bei Verwendung des Ausgangspuffers normal angezeigt werden kann.