在开发工作中,需要删除或者更新某些图片或者数据库时候,需要实时查看当前进度,因此可以用到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!