Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erläuterung von Codebeispielen zur Puffersteuerung in PHP

Ausführliche Erläuterung von Codebeispielen zur Puffersteuerung in PHP

黄舟
黄舟Original
2017-03-08 10:12:331603Durchsuche

Bei der Verwendung von PHP wird jeder zwangsläufig die Header- und Setcookie-Funktionen verwenden. Diese beiden Funktionen senden einen Teil der Datei-Header-Informationen an den Browser, aber wenn vor der Verwendung dieser beiden Funktionen eine Ausgabe erfolgt (einschließlich leerer Ausgaben, z. B. Leerzeichen). , Wagenrückläufe und Zeilenvorschübe) wird einen Fehler auslösen, die Eingabeaufforderungsinformationen lauten wie folgt: „Header war zum Senden bereit“! Gibt es also eine Möglichkeit, die Datei-Header-Informationen nach der Ausgabe zu senden? Zu PHP 4.0 wurden mehrere Funktionen zur Puffersteuerung hinzugefügt. Die Verwendung dieser Funktionen kann uns bei der Lösung vieler Probleme helfen.
1. Einführung in verwandte Funktionen:
1. Flush: Geben Sie den Inhalt im Puffer aus und löschen Sie den Puffer. Funktionsformat: Flush() Beschreibung: Diese Funktion wird häufig verwendet und ist sehr effizient. ​ ​ ​
2. ob_start: Öffne den Ausgabepuffer ​ ​ Funktionsformat: void ​ ob_start(void) ​ ​ Beschreibung: Wenn der Puffer aktiviert ist, werden alle Nicht-Datei-Header-Informationen vom PHP-Programm nicht gesendet. wird aber im internen Puffer gespeichert. Um den Inhalt des Puffers auszugeben, können Sie ob_end_flush() oder ob_end_clean() verwenden, um den Inhalt des Puffers auszugeben. ​
3, ob_get_contents: Gibt den Inhalt des internen Puffers zurück. Verwendung: string ob_get_contents(void) Beschreibung: Diese Funktion gibt den Inhalt des aktuellen Puffers zurück. Wenn der Ausgabepuffer nicht aktiviert ist, wird FALSE zurückgegeben.
4. ob_get_length: Gibt die Länge des internen Puffers zurück. Verwendung: int ob_get_length(void) Beschreibung: Diese Funktion gibt wie ob_get_contents die Länge im aktuellen Puffer zurück, wenn der Ausgabepuffer nicht aktiviert ist. Gibt FALSE zurück. ​ ​ ​
5. ob_end_flush: Den Inhalt des internen Puffers an den Browser senden und den Ausgabepuffer schließen. Verwendung: void ob_end_flush(void) Beschreibung: Diese Funktion sendet den Inhalt des Ausgabepuffers (falls vorhanden).
6. ob_end_clean: Löschen Sie den Inhalt des internen Puffers und schließen Sie den internen Puffer. Verwendung: void ob_end_clean(void). Hinweis: Diese Funktion gibt den Inhalt des internen Puffers nicht aus!
7. ob_implicit_flush: Absolute Aktualisierung ein- oder ausschalten. Verwendung: void ob_implicit_flush ([int flag]) Beschreibung: Jeder, der Perl verwendet hat, kennt die Bedeutung von $|=x. Diese Zeichenfolge kann den Puffer öffnen/schließen Die ob_implicit_flush-Funktion ist dieselbe. Standardmäßig wird der Puffer geschlossen und die absolute Ausgabe geöffnet.
2. Anwendungsbeispiele:
Zu Beginn sagte der Autor, dass die Verwendung von Pufferkontrollfunktionen Fehler beim Senden von Informationen im Dateikopf verhindern kann. Hier ist ein Beispiel:

 -------------------------------------------------------------     
    <?   //PHP提示符     
    ob_start();   //打开缓冲区     
    echo   "Hello/n";   //输出     
    header(&#39;location:gotourl.php&#39;);   
    //把浏览器重定向到gotourl.php     
    ?>    
     -------------------------------------------------------------


Wenn Sie ob_start entfernen, gibt PHP in Zeile 4 der Datei einen Fehler aus (die Fehlermeldung ist wie oben gezeigt), bei ob_start tritt jedoch kein Fehler auf. Der Grund dafür ist, dass beim Öffnen des Puffers Die Zeichen nach dem Echo werden nicht an den Browser ausgegeben, sondern bleiben auf dem Server erhalten. Die Ausgabe erfolgt erst, wenn Sie Flush oder ob_end_flush verwenden, sodass keine Fehler bei der Ausgabe des Dateiheaders auftreten.
Nachfolgend wird ein ganz klassischer Zweck angegeben:
Sie verwenden beispielsweise & lt;? PHPinfo (); & Gt;, diese Informationen variieren jedoch je nach Client . Wenn Sie möchten: Was soll ich tun, wenn ich die Ausgabe der Funktion phpinfo() speichern möchte? Bevor es keine Pufferkontrolle gab, kann man sagen, dass es überhaupt keine Lösung gab, aber mit Pufferkontrolle können wir es leicht lösen:

 -------------------------------------------------------------     
    <?     ob_start();   //打开缓冲区     
    phpinfo();   //使用phpinfo函数     
    $info=ob_get_contents();   //得到缓冲区的内容并且赋值给$info     
    $file=fopen(&#39;info.txt&#39;,&#39;w&#39;);   //打开文件info.txt     
    fwrite($file,$info);   //写入信息到info.txt     
    fclose($file);   //关闭文件info.txt     ?>     
    -------------------------------------------------------------


Verwenden Sie die Mit der obigen Methode können Sie die PHPInfo-Informationen verschiedener Benutzer speichern, was früher leider nicht möglich war! Tatsächlich ist das Obige eine Methode, um einige „Prozesse“ in „Funktionen“ umzuwandeln!

Das Obige ist die detaillierte Erläuterung von Codebeispielen für die Puffersteuerung in PHP. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn