Heim > Backend-Entwicklung > PHP-Tutorial > PHP führt zeitaufwändige Skripte aus und gibt Inhalte in Echtzeit aus

PHP führt zeitaufwändige Skripte aus und gibt Inhalte in Echtzeit aus

藏色散人
Freigeben: 2023-04-07 17:46:02
nach vorne
2017 Leute haben es durchsucht

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 -Tag empfängt.

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(&#39;&#39;,4096)."\n";
    ob_flush();
    flush();
    sleep(2);
}
echo "Done.";
ob_end_flush();
Nach dem Login kopieren

Empfohlen: „PHP Video Tutorial

Das obige ist der detaillierte Inhalt vonPHP führt zeitaufwändige Skripte aus und gibt Inhalte in Echtzeit aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:segmentfault.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage