php 循环抓取网页内容( 如何使用php及时的输出当前结果到浏览器而不刷新 )
优采云 发布时间: 2021-11-23 23:07php 循环抓取网页内容(
如何使用php及时的输出当前结果到浏览器而不刷新
)
php实时输出内容到浏览器
当您正在处理一个耗时较长的流程,但又需要及时了解程序当前的处理状态时,您应该怎么做?下面分享一下如何在不刷新整个页面的情况下,使用php将当前结果及时输出到浏览器。
应用场景:如安装数据库,实时显示每一步信息,如1.数据库创建成功...2.用户表创建成功...3.用户user1 插入成功...
PHP中开启实时输出的方法是ob_implicit_flush(),但是大多数情况下是不行的,因为php.ini配置中的output_buffering输出缓冲大部分是开启的,zlib.output_compression也经常开启,除了 PHP 这个级别,Nginx 的缓冲设置 proxy_buffering,以及压缩 gzip 也大都开启了。针对一两页的需要,修改整个服务器的网站配置。恐怕没有人会做出这样的选择。
这里有一个简单的方法推荐:
案例一:实时输出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 "最新一行";
}