时间:2021-07-01 10:21:17 帮助过:4人阅读
只有 IE 才有缓冲区装满或传输结束才解释传入的内容的现象
空格不是 HTML 元素,无论多少个,也只会显示一个
flush() 的作用是将 php 系统缓冲区的内容推出到客户
ob_flush() 的作用是将 php 用户缓冲区的内容推出到 php 系统缓冲区
ob_end_flush() 的作用是将 php 用户缓冲区的内容推出到 php 系统缓冲区,并关闭 php 用户缓冲区
ob_end_clean() 的作用是将 php 用户缓冲区的内容清空,并关闭 php 用户缓冲区
response 采用的是完全不同的机制(response 是设备)
只有在 ob_start() 后的 ob_end_clean() 才相当于 response.end
我还是不太明白 系统缓冲区 和用户缓冲区,在网上也搜索不到这方面的资料,只是说PHP 支持多级缓冲区。好像是说可以建立n级缓冲区,我想是不是在缓冲区里又可以建缓冲区。这方面PHP比ASP复杂。
系统缓冲区 是指php的输出缓冲区,可用 output_buffering 控制其大小
每当 php 程序有输出时将存放在里边,待装满了或程序结束时一次性发送给用户
flush() 就是强制输出他里面的内容
用户缓冲区 是指用 ob_start() 开辟的缓冲区,每个 ob_start() 就是一个,允许嵌套
你试下这段代码,我在ie,firefox,chrome下都没问题。
';ob_flush();flush(); sleep(1);}?>
关于服务器端推送数据客户端即时显示的问题,其实是会受到web服务器,浏览器,以及代码三个方面的影响。
你要先明白整个流程:
web服务器也有缓冲区buffer,这个buffer的大小,会关系到服务器字节数到达多少后再推送给客户端浏览器。
然后浏览器也会有个buffer,收到多少字节后才显示出来。
你那段代码只是填充一些空白来欺骗浏览器让浏览器把内容即时显示出来。而问题可能在服务器端那边,根本没把数据发到客户端来。
对于服务器如何设置,apache貌似默认设置就可以。
nginx需要关闭gzip,然后设置fastcgi_buffers,fastcgi_buffer_size等值才行。具体你自己再查一下吧。
另外不同浏览器对于缓冲区buffer的规定也不一样,要想实现多种浏览器支持,你就尽量填大一些吧。
iis magager - system.webServer/handlers responseBufferLimit设为0,
php.ini - output_buffer =Off
for($i = 1; $i <= 300; $i++ ) print(" ");
飘过 只看版主的回答 打个记号
你试下这段代码,我在ie,firefox,chrome下都没问题。
';ob_flush();flush(); sleep(1);}?>感谢。