【发布时间】:2021-11-23 08:48:56
【问题描述】:
这个简单的脚本可以在运行在 VM/Azure 上的 LAMP 服务器 (Ubuntu) 上毫无问题地运行。但是,当移植到 Azure Web 应用程序 (php) 时,相同的脚本会在 5 分钟后出现 502 或 504 错误,并且不会显示任何输出。如果行数减少到少于 300 行(大约 5 分钟时间),它将运行,但只有在脚本结束时才会出现所有行。
有什么想法吗?
ini_set('max_execution_time', 0);
for($i=0;$i<600;$i++)
{
echo 'printing...'.$i."<br>";
ob_flush();
flush();
sleep(1);
}
【问题讨论】:
-
我不是 100% 确定,但您应该在 echo 中添加
\n或 PHP_EOL。 -
如果您在处理过程中没有获得数据,那么这意味着您位于反向代理后面,该代理肯定可以保护后端免受攻击,并且能够在您的 Web 应用发送数据时缓存数据关于 Cache-Control 的 HTTP 标头。一些反向代理确实处理了一种“管道”模式,只是在客户端和后端之间打乱字节,但这必须配置。如果 Azure 在你的 PHP 前面有这个软件,我会试着阅读一下。通常情况下,我有一个使用 PHP 脚本传输大文件的案例。我前面有 Varnish,但管理了一个 VCL conf。
-
感谢 Markus,但 EOL 没有解决问题。