在PHP中ob_flush和冲洗的差异浅谈

在手册的ob_flush /冲洗的描述是刷新输出缓冲区,也需要使用,因此会造成很多人混淆…

事实上,他们两个操作不同的对象,在某些情况下,同花顺什么都不做。

的ob_ *系列函数是输出缓冲区操作的PHP本身。

所以,ob_flush是缓冲区刷新PHP本身。

严格来说,只有当PHP被安装为Apache模块(处理程序或筛选器)时,才是实用的。它是一个缓冲区刷新服务器(可以认为是Apache)。

在Apache模块SAPI,冲洗冲洗成员函数指针调用sapi_module,叫Apache API:ap_rflush间接冲洗Apache,输出缓冲区的过程中,手册还说,还有一些其他的Apache模块,可以改变这种行为的结果。

有些Apache模块,如mod_gzip,可以输出缓冲区,导致产生的冲洗结果()功能,并不会立即传送到客户端浏览器,浏览器会缓存之前,它是显示接收到的内容。例如,Netscape浏览器会缓存内容之前接受一新生产线或新的HTML标记的开始,也不会在接受标签显示整个表。

微软的Internet Explorer的某些版本在256字节被接受之前不会开始显示页面,因此必须发送一些额外的空间,让这些浏览器显示页面的内容,因此,正确地使用这两个页面是有序的。第一ob_flush,然后冲洗,当然,在其他的SAPI,叫不齐,只是为了确保你的代码的可移植性,建议使用。

在平和ob_flush使用特别注意的一些地方,导致未能刷新输出缓冲区。



1。平和ob_flush正确的顺序,第一ob_flush然后冲洗,如下:

ob_flush();

同花顺();

如果Web服务器的操作系统是Windows系统,反向或没有ob_flush()是没有问题的。但是输出缓冲区不能被刷新的Linux系统。

两。使用前ob_flush(),确保上述内容的大小是4069个字符。



某些Web服务器的默认值是4069个字符或更大,也就是说,输出内容必须达到4069个字符。服务器将刷新刷新输出缓冲区。为了确保冲洗的有效性,最好是在ob_flush有以下语句()函数:output_buffering。

打印str_repeat(

确保output_buffering值达到。

复制代码代码如下所示:

< PHP

($ i = 1;$ i < 20;$ + +)

{



回声';

ob_flush();

同花顺();

睡眠(1);

}

ob_end_flush();

>