PHP实时回显 实时输出结果的方法 实时反馈结果到浏览器

  • 时间:2019-01-20 08:45 编辑: 来源: 阅读:1052
  • 扫一扫,手机访问
摘要:正常PHP在执行的时候,要等全部执行完毕才会输出结果,这样其实用户体验很差,其实可以实现实时回显PHP 里开启实时输出方法是 ob_implicit_flush() ,但它大部分情况下都不管用,因为 php.ini 配置里 output_buffering 输出缓冲大部分是

正常PHP在执行的时候,要等全部执行完毕才会输出结果,这样其实用户体验很差,其实可以实现实时回显


PHP 里开启实时输出方法是 ob_implicit_flush() ,但它大部分情况下都不管用,因为 php.ini 配置里 output_buffering 输出缓冲大部分是 On 开启的,还有 zlib.output_compression 也经常会被开启,除了 PHP 这一层,还有 Nginx 的缓冲设置 proxy_buffering ,和压缩 gzip 也大都是开启的。为了一两个页面的需求,修改整个服务器的网站配置,恐怕没有人会做这种选择。




这里推荐一下简单的方法:


set_time_limit(0);

ob_end_clean();

ob_end_flush();//关闭缓存

ob_implicit_flush();

echo str_repeat(" ",1024);//部分浏览器需要多于1024字节才开始输出因此这里先产生1024个空格

header('X-Accel-Buffering: no'); // 关键是加了这一行。

echo '现在是:'.date('H:i:s').'<br>';

sleep(5);

echo '五秒后:'.date('H:i:s');

案例1:实时输出shell脚本日志,将shell脚本输出内容重定向到一个日志文件,再实时输出


set_time_limit(0);

ob_end_clean();

ob_implicit_flush();

header('X-Accel-Buffering: no'); // 关键是加了这一行。

 

while(exec("/home/web/a.sh >> /home/web/a.log 2>&1 &"){

 

    $log = file_get_contents('/home/web/a.log'); //这里log你可以把每一行都存入数组,然后每次只echo新的行。

    echo "最新一行";

}


  • 全部评论(0)
最新发布的资讯信息
【CMS学院|DEDECMS】DedeCMS修改广告代码后前台不更新是什么原因怎么办(2019-09-20 08:33)
【CMS学院|DEDECMS】dedecms搜索提示"关键字不能小于2个字节!"怎么修改(2019-09-20 08:31)
【CMS学院|DEDECMS】织梦会员中心的收藏夹文章无法删除怎么办(2019-09-20 08:26)
【CMS学院|DEDECMS】织梦cms模版乱码怎么解决 dedecms模版乱码是因为什么(2019-09-20 08:25)
【CMS学院|DEDECMS】织梦dedecms在导入数据库时提示dede_purview错误怎么办(2019-09-20 08:22)
【CMS学院|DEDECMS】DEDECMS转移数据时提示"dede_advancedsearch' doesn't exist"(2019-09-20 08:21)
【CMS学院|DEDECMS】织梦dedecms搜索列表不显示自定义字段的解决方法(2019-09-19 08:35)
【CMS学院|DEDECMS】织梦cms被挂马 /plus/90sec.php 的修复问题(2019-09-19 08:33)
【CMS学院|DEDECMS】织梦后台装完插件后打不开后台出现500错误信息解决办法(2019-09-19 08:30)
【CMS学院|DEDECMS】dede织梦图片集上传时提示错误信息“(FILEID:1|2|3..)的解决方法(2019-09-19 08:27)
底部广告
网站首页 | 关于我们 | 广告合作 | 联系我们 | 隐私条款 | 免责声明
CopyRight 2004-2017 淘源码网 | 苏ICP备12026353号-3

公安备案苏公网安备 32011202000290号

联系客服
手机版

扫一扫进手机版
返回顶部