我在一个Laravel项目上工作,该项目托管在一个带有Apache的Docker容器中。我有一个脚本,调用一个API,它可能需要超过3分钟的时间来响应,但我得到这个超时错误每次3分钟后:504网关超时我尝试在default.conf文件中将Apache Timeout增加到600(默认值为300),并将max_execution_time和max_input_time等php超时设置为600。谁知道这三分钟的暂停是从哪里来的?谢谢
default.conf
Timeout
max_execution_time
max_input_time
lvmkulzt1#
PHP + Laravel有时候有点麻烦。
我不知道这是否是你的情况,但是如果你的文件非常大,在某个时候PHP可能会耗尽内存,所以如果你仍然有问题,也检查PHP的内存限制。我希望这对你有帮助!
byqmnocz2#
在我的例子中,默认的php-fpm代理超时在apache配置中被设置为60秒。将这个值从60更改为更大的值以及更改PHP端的max_execution_time解决了这个问题。
In file: /opt/docker/etc/httpd/conf.d/10-php.conf 8: <Proxy fcgi://php-fpm:9000> 9: ProxySet connectiontimeout=5 timeout=60 : </Proxy>
mefy6pfw3#
我有一个调用API的脚本API在哪里?你的基础设施?去别的地方?调用脚本在哪里运行(在服务器/php上,在浏览器/JavaScript中,还是其他地方?)这不是API,因为当我直接调用它时,即使在3分钟后也没有超时错误。为什么你没有从代码的行为中知道这一点呢?504网关超时什么人举报的?你的基础设施?API?我尝试将Apache的PHP增加到600(默认值为300)你知道一分钟有60秒,所以“300”是3分钟多吗?你可能没有意识到大多数浏览器的超时时间是5分钟,所以使用更高的值在这里没有帮助。谁知道这三分钟的暂停是从哪里来的?应用大量的猜测,它可能是default_socket_timeout(除非显式设置,否则其值为60秒)或max_execution_time(除非显式设置,否则为30秒)。但暂停是有原因的。如果某个任务预计需要超过30秒才能完成,那么您不应该在HTTP中从页面请求同步调用它。
3条答案
按热度按时间lvmkulzt1#
PHP + Laravel有时候有点麻烦。
我不知道这是否是你的情况,但是如果你的文件非常大,在某个时候PHP可能会耗尽内存,所以如果你仍然有问题,也检查PHP的内存限制。
我希望这对你有帮助!
byqmnocz2#
在我的例子中,默认的php-fpm代理超时在apache配置中被设置为60秒。将这个值从60更改为更大的值以及更改PHP端的max_execution_time解决了这个问题。
mefy6pfw3#
我有一个调用API的脚本
API在哪里?你的基础设施?去别的地方?调用脚本在哪里运行(在服务器/php上,在浏览器/JavaScript中,还是其他地方?)
这不是API,因为当我直接调用它时,即使在3分钟后也没有超时错误。
为什么你没有从代码的行为中知道这一点呢?
504网关超时
什么人举报的?你的基础设施?API?
我尝试将Apache的PHP增加到600(默认值为300)
你知道一分钟有60秒,所以“300”是3分钟多吗?你可能没有意识到大多数浏览器的超时时间是5分钟,所以使用更高的值在这里没有帮助。
谁知道这三分钟的暂停是从哪里来的?
应用大量的猜测,它可能是default_socket_timeout(除非显式设置,否则其值为60秒)或max_execution_time(除非显式设置,否则为30秒)。
但暂停是有原因的。如果某个任务预计需要超过30秒才能完成,那么您不应该在HTTP中从页面请求同步调用它。