In der PHP -Entwicklung sind OB_START () und OB_END_FLUSH () zwei sehr praktische Ausgabebufferungsfunktionen. Durch die Verwendung dieser beiden Funktionen können Entwickler die Seitenausgabe effizienter verwalten, die Leistung optimieren und sogar Aufgaben wie Cache erledigen. In diesem Artikel wird eingehend untersucht, wie diese beiden Funktionen verwendet werden und wie sie zusammenarbeiten, um den Ausgangspufferungsmechanismus besser zu verstehen.
Der Ausgangspufferungsmechanismus bezieht sich auf die Tatsache, dass während der Ausführung von PHP -Skripten der Inhaltsausgang auf der Seite vorübergehend im Speicher gespeichert und dann nach Ausführung des Skripts einheitlich an den Browser gesendet wird. Standardmäßig wird PHP sofort an den Browser gesendet, wenn jede Ausgabezeile vom Skript ausgeführt wird. Wenn die Ausgangspufferung aktiviert ist, wird alle Ausgaben zuerst im Puffer gespeichert und der Inhalt wird erst dann an den Browser gesendet, wenn der Puffer gelöscht oder geschlossen wird.
ob_start () ist eine Funktion, mit der die Ausgangspufferung gestartet wird. Nach dem Aufrufen dieser Funktion werden alle Ausgabeinhalte (z. B. Echo , Print , HTML -Tags usw.) im Speicher zwischengespeichert und nicht sofort an den Browser gesendet. Dies bietet Flexibilität für die nachfolgende Verarbeitung, z. B. das Ändern von Inhalten und Komprimierungsausgabe vor der Seitenausgabe.
Beispielcode:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Ausgangspufferung starten</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Hello, World!"</span></span><span>; </span><span><span class="hljs-comment">// Der Ausgangsinhalt wird im Speicher zwischengespeichert</span></span><span>
</span><span><span class="hljs-comment">// Bis gerufen ob_end_flush(),Inhalte werden an den Browser gesendet</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
OB_END_FLUSH () ist eine Funktion, mit der der aktuelle Ausgangspuffer geschlossen und den Inhalt des Puffer an den Browser gesendet wird. Wenn diese Funktion aufgerufen wird, gibt PHP alle Daten im Puffer zum Browser aus und beendet den Puffermechanismus. Wenn Sie den Ausgangspuffer auf halbem Weg beenden und seinen Inhalt ausgeben möchten, können Sie diese Funktion verwenden.
Beispielcode:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Ausgangspufferung starten</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is buffered content."</span></span><span>; </span><span><span class="hljs-comment">// Inhalt wird zwischengespeichert</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// Pufferung und Ausgabe ausschalten</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Die Kombination von ob_start () und ob_end_flush () ist der Kern der Ausgabepufferung. Durch die Zusammenarbeit dieser beiden Funktionen können Entwickler ein effizienteres Content -Management erreichen. Beispielsweise kann in einigen Fällen, in denen eine große Ausgangsmenge erforderlich ist, der Ausgang im Speicher zwischengespeichert und dann gleichzeitig verschickt werden, um häufige E/A -Vorgänge zu vermeiden und die Ladegeschwindigkeit der Seiten zu verbessern.
Sie können den Inhalt im Puffer ändern und Änderungen vornehmen, bevor Sie OB_END_FLUSH () aufrufen. Dies ist sehr hilfreich, um Inhalte dynamisch zu generieren und die Ausgabe zu optimieren.
Beispielcode:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Ausgangspufferung starten</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Original content"</span></span><span>; </span><span><span class="hljs-comment">// Anfänglicher Ausgangsinhalt</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-comment">// Holen Sie sich gepufferte Inhalte</span></span><span>
</span><span><span class="hljs-comment">// Inhaltsänderungen vornehmen</span></span><span>
</span><span><span class="hljs-variable">$content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_replace</span></span><span>(</span><span><span class="hljs-string">"Original"</span></span><span>, </span><span><span class="hljs-string">"Modified"</span></span><span>, </span><span><span class="hljs-variable">$content</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>(); </span><span><span class="hljs-comment">// Löschen Sie den Puffer und beenden Sie den Puffer</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$content</span></span><span>; </span><span><span class="hljs-comment">// Den geänderten Inhalt ausgeben</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Die Ausgangspufferung kann nicht nur zum Ändern von Inhalten, sondern auch für andere Optimierungszwecke verwendet werden. Zum Beispiel die Kompress -Seitenausgabe, das Laden von Daten oder steuern Sie das Senden von zwischengespeichertem Inhalt usw. Hier finden Sie einige häufige Nutzungsszenarien:
Wenn Sie nach Abschluss des Skripts alles gleichzeitig ausgeben müssen, können Sie OB_Start () verwenden, um die Ausgabe zu puffern, bis das Skript ausgeführt wird.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-comment">// Langlebige Aufgaben</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This will be sent after all tasks are complete."</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// Einheitliche Ausgabe Nach Abschluss aller Aufgaben</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Die Kombination aus Ausgangspufferung und Komprimierungstechnologie kann die Größe der Datenübertragung effektiv verringern und die Ladegeschwindigkeit verbessern. Nach der Aktivierung der Ausgabebufferung können Sie den PHP -OB_START () und die OB_GZHandler -Funktion verwenden, um die Seitenkomprimierung durchzuführen.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(</span><span><span class="hljs-string">"ob_gzhandler"</span></span><span>); </span><span><span class="hljs-comment">// Komprimierung aktivieren</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is a compressed page!"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// Ausgangskomprimierter Inhalt</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Wenn Sie einen sehr komplexen oder dynamisch generierten Inhalt ausgeben müssen, können Sie den Ausgangspuffer zum Sammeln verwenden und vermeiden, dass mehrere Ausgänge während der Verarbeitung an den Browser gesendet werden.
ob_start () und ob_end_flush () sind zwei sehr wichtige Funktionen im PHP -Ausgangspufferungsmechanismus. Sie können Entwicklern helfen, die Seitenausgabe effizienter zu verwalten, die Leistung zu optimieren und unnötige E/A -Vorgänge zu reduzieren. Durch eine angemessene Zusammenarbeit können Sie verschiedene Funktionen wie Inhaltsänderungen, Seitenkomprimierung, verzögerte Ausgabe usw. erkennen, um die Reaktionsgeschwindigkeit und die Benutzererfahrung der Website zu verbessern. Während des Entwicklungsprozesses können Sie flexibel mit diesen beiden Funktionen beim Umgang mit groß angelegten Outputs bequemer machen.