关于flush()和ob_flush()解析[网站编程]
本文“关于flush()和ob_flush()解析[网站编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
flush
(PHP 3, PHP 4, PHP 5)
flush -- 革新输出缓冲
阐明
void flush ( void )
革新PHP程序的缓冲,而不管PHP履行在何种情形下(CGI ,web服务器等等).该函数将当前为止程序的全部输动身送到用户的浏览器.
flush() 函数不会对服务器或客户端浏览器的缓存情势产生影响.因此,必须同时利用 ob_flush() 和flush() 函数来革新输出缓冲.
个体web服务器程序,分外是Win32下的web服务器程序,在发送后果到浏览器之前,仍旧会缓存脚本的输出,直到程序完毕为止.
有些Apache的模块,比方mod_gzip,大概自己举行输出缓存,这将招致flush()函数产生的后果不会当即被发送到客户端浏览器.
乃至浏览器也会在显示之前,缓存接纳到的内容.比方 Netscape 浏览器会在承遭到换行或 html 标志的开首之前缓存内容,并且在承遭到 </table> 标志之前,不会显示出整个表格.
一些版本的 Microsoft Internet Explorer 只有当承遭到的256个字节今后才开始显示该页面,所以必须发送一些额外的空格来让这些浏览器显示页面内容.
ob_flush
(PHP 4 >= 4.2.0, PHP 5)
ob_flush -- Flush (send) the output buffer
Description
void ob_flush ( void )
This function will send the contents of the output buffer (if any). If you want to further process the buffer's contents you have to call ob_get_contents() before ob_flush() as the buffer contents are discarded after ob_flush() is called.
This function does not destroy the output buffer like ob_end_flush() does.
flush和ob_flush的利用上有一些分外简单出错的地方,造成无法革新输出缓冲.
一. flush和ob_flush的精确次序,精确应是,先ob_flush再flush,以下:
ob_flush();
flush();
假如Web服务器的操作系统是windows系统,那次序倒置大概不利用ob_flush()也不会呈现问题.但是在Linux系统上就无法革新输出缓冲.
二. 利用ob_flush()前,确保前面的内容大小充足4069字符.
一些Web服务器的output_buffering默许是4069字符大概更大,即输出内容必须到达4069字符服务器才会flush革新输出缓冲,为了确保flush有效,最好在ob_flush()函数前有以下语句:
print str_repeat(" ", 4096);
以确保到达output_buffering值.
for ($i=10; $i>0; $i--)
{
echo $i.'<br />';
ob_flush();
flush();
sleep(1);
}
ob_end_flush();
以上是“关于flush()和ob_flush()解析[网站编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |