PHP消息实时输出

发布时间:2016-02-29 浏览次数:3169 文章来源:个人博客

在开发工作中,需要删除或者更新某些图片或者数据库时候,需要实时查看当前进度,因此可以用到flush — 刷新输出缓冲。

刷新PHP程序的缓冲,而不论PHP执行在何种情况下(CGI ,web服务器等等)。该函数将当前为止程序的所有输出发送到用户的浏览器。

flush() 函数不会对服务器或客户端浏览器的缓存模式产生影响。因此,必须同时使用 ob_flush() 和 flush() 函数来刷新输出缓冲。


注:如果在程序的首部加入ob_implicit_flush()打开绝对刷新,就可以在程序中不再使用PHP函数flush(),这样做的好处是:提高效率!
示例:

if (ob_get_level() == 0)      //ob_get_level()  缓冲级别,如果缓冲不起作用,返回值是0

//打开缓冲区。当输出缓冲激活后,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中。
 ob_start();              
 
for ($i = 0; $i < 10; $i++) {
 echo "Line to show.";
 echo str_pad('', 4096) . " "; //可以不用,这个主要是设置字符串长度。
 ob_flush();             // 这个使得浏览器刷新输出缓冲
 flush();              // 这个使得服务器刷新输出缓冲
 sleep(2);
}

echo "Done.";
ob_end_flush();            //输出缓冲区的内容

内部缓冲区的内容可以用 ob_get_contents() 函数复制到一个字符串变量中。 想要输出存储在内部缓冲区中的内容,可以使用 ob_end_flush() 函数。另外, 使用 ob_end_clean() 函数会静默丢弃掉缓冲区的内容。


小提示:如果是需要点击按钮才开始更新,那么可以用js控制iframe的链接达到效果。ajax是没有效果的!

    iframe使用:

    在iframe中不断输出控制触发进度条加载的js!



key-word
flush 实时输出 PHP进度条 PHP更新结果实时查询