Buffering of PHP programs, regardless of the circumstances under which PHP is executed (CGI, web server, etc.). This function sends all the program's output so far to the user's browser.
#flush() function has no effect on the cache mode of the server or client browser. Therefore, both the ob_flush() and flush() functions must be used to flush the output buffer.
Individual web server programs, especially web server programs under Win32, will still cache the output of the script until the end of the program before sending the results to the browser.
I wrote a small example and wanted to add it to the page every time. Outputs a number every second.
Follow the code on the Internet:
ob_end_clean (); for ($i=10; $i>0; $i--) { echo $i; flush(); sleep(1); }
Or:
for ($i=10; $i>0; $i--) { echo $i; ob_flush(); flush(); sleep(1); }
Found that it works in Firefox, but not in IE. 10 numbers are output together every time , which means buffering is not effective.
I started adjusting the output_buffering settings in php.ini again and restarted apache, but it still didn't work.
Then I saw a passage:
Some versions of Microsoft Internet Explorer will only start to display the page after receiving 256 bytes, so some additional spaces must be sent to allow these browsers to display the page content.
SinfulIE browser, the problem is that there are too many TMDs!
Then I modified the program and it became normal:
echo str_pad('',4096); for ($i = 0; $i < 10; $i++) { echo $i; ob_flush(); flush(); sleep(1); }
The code is as follows:
// ob_end_flush ();//IE8下没起作用 echo str_pad(" ", 256);//IE需要接受到256个字节之后才开始显示 for($i=0;$i<18;$i++) { echo $i; flush(); sleep(1); }
The above is the detailed content of Solution to invalid buffering in php ie. For more information, please follow other related articles on the PHP Chinese website!