php直接输出到浏览器
官方文档
https://www.php.net/manual/zh/intro.outcontrol.php
函数说明
https://www.php.net/manual/zh/function.flush.php
常用缓冲函数
ob_start() 开启输出缓冲。
ob_get_contents() 获取输出缓冲的内容。
ob_clean() 清空输出缓冲区而不输出内容。
ob_end_clean() 清空输出缓冲区并关闭输出缓冲。
ob_flush() 发送缓冲区内容到浏览器。
flush() 将缓冲内容发送给客户端。
代码实现
for ($i = 1; $i <= 10; $i++) {
echo $i;
ob_flush(); //获取缓存区的内容,转为等待输出状态
flush(); //将等待输出的数据立刻输出到客户端
sleep(1);
}
有些时候,这个代码并不能实时输出到浏览器,原因有2:
1. 服务器 例如 nginx 开启了缓存,需要关掉
header('X-Accel-Buffering: no'); //关闭nginx的缓存
2. 一些浏览器需要256字节后才会返回内容
echo $str . str_repeat(' ', 256);
最终结果实现是:
header('X-Accel-Buffering: no'); //关闭nginx的缓存
echo $str . str_repeat(' ', 256);
for ($i = 1; $i <= 10; $i++) {
echo $i;
ob_flush(); //获取缓存区的内容,转为等待输出状态
flush(); //将等待输出的数据立刻输出到客户端
sleep(1);
}
php直接输出到浏览器
https://lysowc.cn/archives/1725330424645