Heim  >  Artikel  >  Backend-Entwicklung  >  Lösung für ungültige Pufferung in PHP, d. h

Lösung für ungültige Pufferung in PHP, d. h

伊谢尔伦
伊谢尔伦Original
2017-06-24 11:03:561810Durchsuche

Pufferung von PHP-Programmen, unabhängig von den Umständen, unter denen 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 Webserverprogramme, insbesondere Webserverprogramme unter Win32, speichern die Ausgabe des Skripts noch bis zum Ende des Programms, bevor sie die Ergebnisse an den Browser senden.
Ich habe selbst ein kleines Beispiel geschrieben und wollte es hinzufügen Es wird jedes Mal auf die Seite übertragen. Gibt jede Sekunde eine Zahl aus.
Folgen Sie dem Code im Internet:

ob_end_clean
(); 
for ($i=10; $i>0; $i--) 
{ 
echo $i; 
flush(); 
sleep(1); 
}

oder:

for ($i=10; $i>0; $i--) 
{ 
echo $i; 
ob_flush(); 
flush(); 
sleep(1); 
}

Es wurde festgestellt, dass es in Firefox funktioniert, aber nicht im IE. Es ist jedes Mal 10 Die Zahlen werden zusammen ausgegeben, was darauf hinweist, dass die Pufferung nicht wirksam ist.
Ich habe erneut begonnen, die Ausgabepuffereinstellungen in php.ini anzupassen und Apache neu gestartet, aber es hat immer noch nicht funktioniert.
Dann habe ich eine Passage gesehen:
Einige Versionen von Microsoft Internet Explorer beginnen erst mit der Anzeige der Seite, nachdem sie 256 Bytes empfangen haben. Daher müssen einige zusätzliche Leerzeichen gesendet werden, damit diese Browser den Seiteninhalt anzeigen können.
Der böseIE-Browser, das Problem ist, dass es zu viele TMDs gibt!
Dann habe ich das Programm geändert und es funktionierte normal:


echo 
str_pad('',4096); 
for ($i = 0; $i < 10; $i++) { 
echo $i; 
ob_flush(); 
flush(); 
sleep(1); 
}

Der Code lautet wie folgt:

//
ob_end_flush
();//IE8下没起作用 
echo str_pad(" ", 256);//IE需要接受到256个字节之后才开始显示 
for($i=0;$i<18;$i++) { 
echo $i; 
flush(); 
sleep(1); 
}


Das obige ist der detaillierte Inhalt vonLösung für ungültige Pufferung in PHP, d. h. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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