您当前的位置:首页 > 计算机 > 编程开发 > PHP

php 实时输出内容到浏览器

时间:10-28来源:作者:点击数:
城东书院 www.cdsy.xyz

当你在处理一个过程需要耗时很长,但你又需要适时的知道程序当前的处理状况的时候,该怎么办呢?下面就分享一下如何使用php及时的输出当前结果到浏览器而不刷新整个页面的效果吧。

应用场景:如安装数据库,实时显示每一步信息,如1.数据库创建成功...2.user表创建成功...3.用户user1插入成功...

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_implicit_flush();
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 "最新一行";
}

 

城东书院 www.cdsy.xyz
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐