Heim > Artikel > Backend-Entwicklung > Wie PHP zeitaufwändige Skripte ausführt, um Inhalte in Echtzeit auszugeben
Bei der Ausführung eines zeitaufwändigen Skripts werden die Daten erst ausgegeben, nachdem das Skript ausgeführt wurde. Wenn es nicht verarbeitet wird, wird der auf der Seite ausgegebene Inhalt bis zur Ausführung zwischengespeichert wird verarbeitet. Es wird später ausgeführt.
flush – Ausgabepuffer leeren
Leeret den Puffer des PHP-Programms unabhängig vom Kontext, in dem PHP ausgeführt wird (CGI, Webserver usw.). Diese Funktion sendet alle bisherigen Ausgaben des Programms an den Browser des Benutzers. Die Funktion
flush() hat keinen Einfluss auf den Cache-Modus des Server- oder Client-Browsers. Daher müssen sowohl die Funktionen ob_flush() als auch Flush() verwendet werden, um den Ausgabepuffer zu leeren.
Einige Webserver-Programme, insbesondere solche unter Win32, speichern die Ausgabe des Skripts noch bis zum Ende des Programms zwischen, bevor sie die Ergebnisse an den Browser senden.
Einige Apache-Module, wie z. B. mod_gzip, können ihre eigene Ausgabe zwischenspeichern, was dazu führt, dass die von der Funktion „flush()“ generierten Ergebnisse nicht sofort an den Client-Browser gesendet werden.
Sogar der Browser speichert den empfangenen Inhalt zwischen, bevor er ihn anzeigt. Beispielsweise speichert der Netscape-Browser Inhalte zwischen, bis er einen Zeilenumbruch oder den Anfang eines HTML-Tags erhält, und zeigt die gesamte Tabelle erst an, wenn er ein f16b1740fad44fb09bfe928bcc527e08-Tag erhält.
Einige Versionen von Microsoft Internet Explorer beginnen erst mit der Anzeige der Seite, nachdem 256 Bytes empfangen wurden. Daher müssen einige zusätzliche Leerzeichen gesendet werden, damit diese Browser den Seiteninhalt anzeigen können.
Wenn eine Echtzeitausgabe erforderlich ist, sind zwei Kernfunktionen ob_flush, Flush;
<?php // echo phpinfo(); if (ob_get_level() == 0) ob_start(); for ($i = 0; $i<10; $i++){ echo "<br> Line to show."; echo str_pad('',4096)."\n"; ob_flush(); flush(); sleep(2); } echo "Done."; ob_end_flush();
Weitere PHP-bezogene Kenntnisse finden Sie im PHP-Tutorial!
Das obige ist der detaillierte Inhalt vonWie PHP zeitaufwändige Skripte ausführt, um Inhalte in Echtzeit auszugeben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!