【问题标题】:Nginx PHP set_time_limit() not workingNginx PHP set_time_limit()不起作用
【发布时间】:2015-05-02 20:17:46
【问题描述】:

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

感谢您的努力。

【问题讨论】:

  • 你发现了吗?
  • @timh:不,我没有。
  • 为什么要对面向客户端的脚本执行 set_time_limit?这不是正确的做法。考虑替代解决方案。我只在处理队列等的后端工作人员中使用 set_time_limit。

标签: php nginx


【解决方案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 线程池的方式,其他更改超时的方式很难配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 2012-08-13
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    相关资源
    最近更新 更多