PHP实时输出内容到浏览器

文章介绍了如何在处理耗时程序时监控状态,包括关闭Nginx缓存、调整PHP配置输出缓冲、使用ob_flush和flush函数实时输出数据,以确保用户看到程序的实时更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们处理一个需要耗时很长程序时候,需要知道程序当前的处理状态,该怎么办呢?

比如:循环采集数据、导入数据库等等

1、Nginx不缓存PHP返回的内容

header('X-Accel-Buffering: no'); //关闭nginx的缓存

2、PHP不缓存(PHP不缓存有两种方式)

一、是修改配置文件php.in,修改output_buffering为0或Off

output_buffering = 0
;或
output_buffering = Off

二、代码中关闭

ob_end_flush(); //冲刷出(送出)输出缓冲区内容并关闭缓冲
//或者
ob_end_clean(); //统计缓冲区的大小,并清空缓冲区

三、获取buffer中的内容 进行输出

ob_flush(); //把数据从php的缓冲区中释放出来

示例用法如下:

//方式1
ob_end_flush();//关闭缓存 数据不再存储到buffer区域中,变为等待输出状态
for ($i = 1; $i <= 10; $i++) {
	echo 'loading ' . $i . '0%<br>';
	flush();    //将等待输出的数据立刻输出到客户端
	sleep(1);
}


//方式2
ob_end_flush();        //关闭缓存 数据不再存储到buffer区域中,变为等待输出状态
ob_implicit_flush(1);  //打开绝对(隐式) 刷送。每次输出调用后有一次刷送操作,以便不再需要对 flush() 的显式调用。
for ($i = 1; $i <= 10; $i++) {
	echo 'loading ' . $i . '0%<br>';
	sleep(1);
}

//方式3
for ($i = 1; $i <= 10; $i++) {
	echo 'loading ' . $i . '0%<br>';
	ob_flush();    //获取缓存区的内容,转为等待输出状态
	flush();       //将等待输出的数据立刻输出到客户端
	sleep(1);
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值