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
作者
sora
发布于
2024年09月03日
许可协议