gpt4 book ai didi

php - ob_implicit_flush(), flush(), ob_flush() - 不在远程服务器上工作

转载 作者:可可西里 更新时间:2023-10-31 23:56:47 27 4
gpt4 key购买 nike

如果我从 XAMPP 上的本地服务器在 chrome 中加载此脚本:

header("Content-Type:text/plain");

set_time_limit(0);

$max = 40;
for ($i = 0; $i < $max; $i++) {
$response = array( 'server time: ' . date("h:i:s", time()), 'progress' => round($i/$max*100));
echo json_encode($response);
ob_flush();
flush();
sleep(1);
}
ob_clean();

它的工作方式与您预期的一样,页面每秒显示一个新响应。但是,当我将它上传到我的远程服务器(运行相同版本的 php)时,它会等到整个脚本完成后再显示输出。对于非常长的脚本,它每 30-60 秒左右更新一次输出。

正如标题所暗示的,我已经尝试使用所有不同的冲洗功能,但没有任何效果。我的本地服务器和远程服务器的 php.ini 可能有些不同,但我不知道是什么。

请帮忙。

---编辑---

我一直在做更多的测试。我注意到它确实每 4096 个字节更新一次,这恰好是我的远程服务器的“output_buffering”的 php ini 值。但是,出于某种原因,如果我将 output_buffering 更改为“1”或“off”,则没有任何变化。它仍然只每 4096 字节更新一次。

我正在同一浏览器的不同服务器上测试 2 个相同的脚本。

最佳答案

我没有考虑 nginx,它有自己的输出缓冲区。

我只是添加了'header("X-Accel-Buffering: no");'到 php 脚本的顶部,现在一切正常。

关于php - ob_implicit_flush(), flush(), ob_flush() - 不在远程服务器上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32538548/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com