[Was sind die üblichen Verwendung von OB_Start und OB_end_Clean und ihre Hauptunterschiede? ]
In PHP sind OB_Start und OB_end_Clean zwei sehr nützliche Funktionen für Ausgabepuffer. Sie werden häufig verwendet, um die Skriptausgabe zu kontrollieren, und vermeiden Sie, dass Daten direkt in den Browser ausgegeben werden, sie jedoch im Speicher zwischengespeichert, bis Sie entscheiden, wann Sie diese ausgeben möchten. Dies ist besonders nützlich für die Leistungsoptimierung, die Inhaltsverarbeitung oder das Senden von HTTP -Headern am Kopfzeilen der Seite.
Mit PHP -Ausgangspufferungsmechanismus können wir Skriptausgänge (wie HTML, JavaScript oder einfacher Text) in einem Puffer im Speicher speichern, anstatt sie direkt an den Browser zu senden. Durch die Verwendung der Ausgabebufferung können wir eine feinere Steuerung durchführen, bevor die Seite die Ausgabe sendet. Dies ist sehr nützlich für einige Szenarien, in denen die Ausgabe manipuliert oder geändert werden muss.
Die OB_Start -Funktion wird verwendet, um den Ausgangspuffer zu starten. Wenn OB_Start () aufgerufen wird, startet PHP die Cache -Ausgabe, anstatt ihn direkt an den Browser zu senden.
Grammatik:
<span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span></span>Nach dem Aufrufen von OB_Start () werden alle Ausgabeinhalte im internen Puffer gespeichert, anstatt sofort auf dem Browser angezeigt zu werden. Zu diesem Zeitpunkt können Sie eine Verarbeitung durchführen, z. B. das Ändern des zwischengespeicherten Inhalts oder das Senden des zwischengespeicherten Inhalts an eine Datei oder Datenbank.
Beispiel:
<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 nicht sofort angezeigt</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 den Inhalt des aktuellen Puffers</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 schalten Sie den Ausgangspuffer aus</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"The buffered content: "</span></span><span> . </span><span><span class="hljs-variable">$content</span></span><span>; </span><span><span class="hljs-comment">// Ausgabe "The buffered content: Hello, world!"</span></span><span>
</span></span>Im obigen Beispiel startet Ob_Start () den Puffer und alle Inhaltsausgaben über Echo werden vorübergehend zwischengespeichert. Anschließend erhält die Funktion OB_get_Contents () den Inhalt im Puffer und reinigt den Puffer, nachdem er ob_end_clean () aufgerufen wird.
OB_END_CLEAN wird verwendet, um den aktuellen Ausgangspuffer zu schließen und den Inhalt im Puffer zu löschen. Das heißt, es verwaltet alle Ausgaben im aktuellen Puffer, anstatt ihn an den Browser zu senden.
Grammatik:
<span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();
</span></span>Diese Funktion wird normalerweise mit OB_Start () verwendet, um den Puffer nach dem Erhalten oder Manipulieren des Inhalts des Puffers zu reinigen.
Beispiel:
<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."</span></span><span>; </span><span><span class="hljs-comment">// Ausgabe不会立即显示</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 schließen Sie ihn</span></span><span>
</span><span><span class="hljs-comment">// Ausgabe什么都不会显示,Weil der Inhalt des Puffers gelöscht wurde</span></span><span>
</span></span>OB_Start wird verwendet, um den Ausgangspuffer zu starten und die nachfolgende Ausgabe im Puffer vorübergehend zu speichern.
OB_END_CLEAN wird verwendet, um den aktuellen Ausgangspuffer zu schließen und den gesamten Inhalt im Puffer zu löschen, ohne etwas an den Browser auszugeben.
Mit der Kombination dieser beiden Funktionen können Sie den Ausgangsinhalt flexibel steuern, z. B. die Änderung von HTTP -Headerinformationen, ohne Ausgabe zu senden, oder die spezifische Ausgabeverarbeitung beim Laden der Seite durchzuführen.
Ändern Sie die Ausgabe, bevor Sie HTTP -Header -Informationen <br> senden . <br> Die Ausgangspufferung kann verwendet werden, um Fehler von PHP -Fehlern zu vermeiden, da HTTP -Header erst nach dem Löschen oder Versenden des Inhalts des Ausgangspuffers gesendet werden können. Wenn Sie vor Beginn des Skripts benutzerdefinierte HTTP -Headers senden müssen, können Sie Ob_Start () verwenden.
<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-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Location: http://example.com"</span></span><span>); </span><span><span class="hljs-comment">// Headerinformationen ändern</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 schließen Sie ihn</span></span><span>
</span></span>Cache -Seiteninhalt <br> In einigen Szenarien zur Leistungsoptimierung kann die Ausgabe der Cache -Seite die Reaktionszeit der nachfolgenden Anforderungen erheblich verkürzen. Beispielsweise kann der Inhalt des Ausgabepuffer in einer Datei gespeichert werden, um doppelte Datenbankabfragevorgänge zu vermeiden.
<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">include</span></span><span>(</span><span><span class="hljs-string">"content.php"</span></span><span>); </span><span><span class="hljs-comment">// 生成Ausgabe</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 zwischengespeicherte Inhalte</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</span></span><span>
</span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-string">"cached_page.html"</span></span><span>, </span><span><span class="hljs-variable">$content</span></span><span>); </span><span><span class="hljs-comment">// Speichern Sie zwischengespeicherte Inhalte in Dateien</span></span><span>
</span></span>Inhaltsänderung oder Umleitung <br> Wenn Sie den generierten HTML -Inhalt ändern oder umleiten müssen, ist auch der Ausgangspuffer sehr bequem. Sie können beispielsweise den Pufferinhalt über ob_get_contents () erhalten und dann nach Bedarf ändern.
<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">"Hello, this is the original content!"</span></span><span>;
</span><span><span class="hljs-variable">$buffer</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 den Pufferinhalt</span></span><span>
</span><span><span class="hljs-comment">// Inhalt ändern</span></span><span>
</span><span><span class="hljs-variable">$modified_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">$buffer</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</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$modified_content</span></span><span>; </span><span><span class="hljs-comment">// Ausgabe修改后的内容</span></span><span>
</span></span>OB_Start und OB_end_Clean sind leistungsstarke Ausgangspufferentools in PHP, die eine flexible Ausgabesteuerung bieten und den Entwicklern ermöglichen, den Ausgangsinhalt vor dem Senden der Ausgabe zu ändern, zu cache oder zu verwerfen. Durch die angemessene Verwendung dieser beiden Funktionen können einige häufige Probleme effektiv vermieden werden, z.