Aktueller Standort: Startseite> Neueste Artikel> Was ist der Unterschied zwischen OB_END_CLEAN- und OB_FLUSH -Funktionen? Wann sollte ich sie in Kombination verwenden?

Was ist der Unterschied zwischen OB_END_CLEAN- und OB_FLUSH -Funktionen? Wann sollte ich sie in Kombination verwenden?

gitbox 2025-06-23

Was ist der Unterschied zwischen OB_END_CLEAN- und OB_FLUSH -Funktionen? Wann sollte ich sie in Kombination verwenden?

In PHP ist ein Ausgangspuffer ein wichtiges Konzept, das den in den Browser gesendeten Inhalt vorübergehend gespeichert hat. PHP liefert viele Funktionen, um das Verhalten von Ausgangspuffern zu steuern, wobei OB_END_CLEAN () und OB_FLUSH () zwei häufig verwendete Funktionen sind, die normalerweise zum Reinigen oder Spülen des Ausgangspuffers verwendet werden. Obwohl sie ähnlich aussehen, sind ihre Funktionen und Nutzungsszenarien deutlich unterschiedlich.

ob_end_clean () Funktion

Die Funktion OB_end_Clean () wird verwendet, um den aktuellen Ausgangspuffer zu schließen und den Inhalt im Puffer zu verwerfen. Das heißt, nach dem Aufrufen dieser Funktion wird der Inhalt des Puffers verworfen und die Seite gibt keinen Inhalt aus. Dies wird normalerweise in einigen Fällen verwendet, in denen wir den Puffer stornieren müssen, ohne dass er im Browser erscheinen soll.

Szenarien verwenden :

  • Wenn Sie den Ausgabeinhalt ändern oder verarbeiten müssen, aber den Inhalt im aktuellen Puffer nicht an den Browser senden möchten, können Sie OB_end_Clean () verwenden.

  • Wenn Sie feststellen, dass der Inhalt nach dem Einschalten des Puffers nicht ausgegeben werden muss oder Sie entscheiden müssen, ob Sie gemäß bestimmten Bedingungen ausgeben möchten, können Sie diese Funktion aufrufen, um den Puffer zu löschen.

Beispielcode :

 <span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();  </span><span><span class="hljs-comment">// Starten Sie den Ausgangspuffer</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This content will be discarded."</span></span><span>;  </span><span><span class="hljs-comment">// Cache -Inhalt</span></span><span>

</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();  </span><span><span class="hljs-comment">// Den Pufferinhalt verwerfen,Keine Ausgabe</span></span><span>

</span><span><span class="hljs-comment">// Der obige Text wird nicht auf der Seite angezeigt</span></span><span>
</span></span>

OB_FLUSH () Funktion

Die Funktion OB_FLUSH () wird verwendet, um den Inhalt des aktuellen Puffer sofort an den Browser zu senden, schließt jedoch den Puffer nicht. Es gibt einfach die Daten im Puffer an den Client aus, und der Puffer existiert weiterhin, und Sie können weiterhin Daten in den Puffer schreiben.

Szenarien verwenden :

  • Wenn Sie während der Verarbeitung Daten im Puffer sofort an den Browser ausgeben möchten, den Puffer jedoch beibehalten möchten, damit Sie weiterhin Daten hinzufügen können, können Sie ob_flush () verwenden.

  • OB_FLUSH () wird häufig verwendet, um Echtzeit-Ausgabeszenarien zu verarbeiten, z. B. dynamische Generierung von Berichten oder Fortschrittsbalken-Updates.

Beispielcode :

 <span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();  </span><span><span class="hljs-comment">// Starten Sie den Ausgangspuffer</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This content will be flushed to the browser."</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-comment">// Auf der Seite wird der obige Text sofort angezeigt,Nachfolgende Inhalte werden weiterhin gepuffert</span></span><span>
</span></span>

Der Unterschied zwischen ob_end_clean () und ob_flush ()

Obwohl OB_END_CLEAN () und OB_FLUSH () beide Funktionen im Zusammenhang mit Ausgabepuffern sind, verhalten sie sich unterschiedlich:

  1. Pufferverarbeitung :

    • ob_end_clean () legt alles im Puffer ab und schließt den Puffer.

    • OB_FLUSH () gibt den Inhalt im Puffer in den Browser aus, schließt den Puffer jedoch nicht. Der Puffer existiert immer noch und Sie können den Inhalt weiter schreiben.

  2. Ausgangsergebnis :

    • ob_end_clean () wird nichts ausgeben, da die Daten im Puffer gelöscht werden.

    • OB_FLUSH () gibt den Inhalt im aktuellen Puffer sofort zum Browser aus.

Wann soll sie in Kombination verwendet werden?

In der tatsächlichen Entwicklung werden OB_END_CLEAN () und OB_FLUSH () manchmal in Kombination verwendet, um den spezifischen Anforderungen zu erfüllen. Wenn Sie beispielsweise eine große Menge an Daten oder dynamischen Inhalten verarbeiten müssen und einige Inhalte rechtzeitig an den Browser des Benutzers ausgeben möchten. Sie möchten jedoch nicht, dass einige Inhalte ausgegeben werden, können Sie deren Kombination verwenden:

  1. Phasenausgabe : Beim Generieren von Berichten oder zur Verarbeitung großer Dateien können Sie OB_FLUSH () verwenden, um einige Inhalte zu aktualisieren, und OB_END_CLEAN (), um unerwünschte Inhalte zu verwerfen.

  2. Nutzlose Inhalte aufräumen : Wenn Sie feststellen, dass einige Inhalte nicht die Erwartungen entsprechen und verworfen werden müssen, können Sie zuerst OB_FLUSH () verwenden, um den vorbereiteten Inhalt auszugeben, und dann OB_end_Clean () verwenden, um den verbleibenden Teil zu verwerfen.

Beispielcode:

 <span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();  </span><span><span class="hljs-comment">// Starten Sie den Ausgangspuffer</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This content will be flushed."</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-comment">// Einige nachfolgende Inhalte erfordern möglicherweise keine Ausgabe</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();  </span><span><span class="hljs-comment">// Verwerfen Sie den nachfolgenden unerwünschten Pufferinhalt</span></span><span>

</span><span><span class="hljs-comment">// Die Seite wird angezeigt“ This content will be flushed.”</span></span><span>
</span></span>

Zusammenfassen

  • OB_END_CLEAN () wird verwendet, um den Inhalt im Ausgangspuffer zu verwerfen und den Puffer zu schließen.

  • OB_FLUSH () wird verwendet, um den Inhalt im Ausgangspuffer zum Browser zu spülen, schließt den Puffer jedoch nicht.

In der Entwicklung hängt die ausgewählte Methode davon ab, was Sie erreichen möchten. Wenn Sie den Inhalt im Puffer verwerfen müssen, können Sie ob_end_clean () verwenden. Wenn Sie den Puffer behalten und den Inhalt in den Browser ausgeben möchten, können Sie OB_FLUSH () verwenden. In einigen Szenarien können Sie sie in Kombination verwenden, um eine flexiblere Ausgangskontrolle zu erhalten.