2015-03-02 76 views
3

我想在nginx上增加一个php站点的超时,所以我没有得到“504网关超时”。我试过set_time_limit,但它不起作用。我发现了一些基于修改配置文件的解决方案(例如Prevent nginx 504 Gateway timeout using PHP set_time_limit())。不过,我不应该在我的情况下修改这些文件。有没有这样的方式?Nginx的PHP set_time_limit()不工作

谢谢你的努力。

+0

你知道了吗? – timh 2015-09-18 06:35:00

+0

@timh:不,我没有。 – 2015-09-22 16:29:32

+0

为什么要在面向脚本的客户端上执行set_time_limit?这是不正确的做法。考虑替代解决方案。我仅在后端工作人员处理队列等时使用set_time_limit。 – num8er 2016-08-03 21:53:25

回答

1

首先,您必须编辑您的Nginx配置文件以更改fastcgi_read_timeout。没有得到解决,你必须改变这个设置。

我不知道你为什么说“我不应该在我的情况下修改这些文件”。我认为你的理由可能是你想改变你的某个网站的超时时间,而不是其他时间。我发现要实现的最好方法是将fastcgi_read_timeout设置为很长的超时时间(对于任何站点来说,最长的时间)。

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

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