Nginx PHP set_time_limit() 不工作

Nginx PHP set_time_limit() not working

我想增加 nginx 上一个 php 站点的超时,这样我就不会收到“504 网关超时”。我已经尝试 set_time_limit 但它不起作用。我发现了一些基于修改配置文件的解决方案(例如 Prevent nginx 504 Gateway timeout using PHP set_time_limit())。但是,就我而言,我不应该修改这些文件。有这样的方法吗?

感谢您的努力。

首先,您必须编辑 Nginx 配置文件以更改 fastcgi_read_timeout。没有办法解决这个问题,您必须更改该设置。

我不确定你为什么说 "I shouldn't modify these files in my case"。我认为您的原因可能是您想更改其中一个网站的超时时间,而不是其他网站。我发现实现此目的的最佳方法是继续并将 fastcgi_read_timeout 设置为很长的超时(您希望您的任何站点的最长超时时间)。

但您不会真正指望使用该超时,而是让 PHP 处理超时。编辑您的 PHP 的 php.ini 并将 max_execution_time 设置为您希望用于大多数网站的合理时间(可能是 30 秒?)。

现在,要对特定网站或网页使用更长的超时时间,请在 PHP 中的任何脚本的开头使用 set_time_limit() 函数以允许 运行 更长。这确实是在 Nginx / PHP-FPM 设置上对某些网站进行不同设置但对其他网站不进行设置的唯一简单方法。由于 PHP-FPM 与服务器上的多个网站共享 PHP 线程池的方式,其他更改超时的方法很难配置。