504 Gateway Time-out之后,代码还会继续执行吗?

服务端需要执行一个很长时间的请求处理,会出现504,服务器配置不能改。请求结果不重要,想知道如果504,那处理代码还会不会继续执行。如果不执行,有没有什么好的方法?后端是php 的Yii写的。

阅读 12.1k
5 个回答

nginx 504 之后,php 还有可能会执行一段时间。
具体看 nginx 的超时设置 和 php 的超时设置。

看情况, 要看php进程和apache等容器的超时时间的。504是指nginx在一定时间内,没有得到后端的返回(apache、fpm), 所以会返回给前端504,让前端不要继续等待。但是上游服务器依然会继续执行,直到执行完毕或者达到他们(apache、fpm、php)的超时时间,如果没有设置,则会一直执行下去,但是前端已经得不到返回了。

在web服务器中执行一个长时间的进程是一个不合理的做法。建议优化代码或者做成脚本任务。

顺便一提,如果上游服务器的超时时间小于nginx的超时时间、并且达到了超时时间的话, 前端会返回502

代码不会继续执行了,就是因为代码得不到请求,所以才会出现504Gateway Time-out
504 Gateway Time-out字面意思,我们可以理解为网页请求超时,也是浏览网站网页所发出的请求没有反应或者未响应,在网站程序层面来说,是请求未能够执行相应的PHP-CGI程序,或者PHP-CGI程序未能做出相应的处理,又或者是CGI程序的响应处理结果未能够反馈到浏览器或者未能及时反馈到浏览器。
具体你可以看看:http://host.zzidc.com/wljc/12...

如果PHP需要执行耗时很长的任务,请把需要写的东西写到yii项目下的command文件夹,然后利用Linux的crontab定时任务来进行定时执行,这样就可以在后台执行了,如果是通过前端请求执行的方式,就比较麻烦。

不会,499中断请求了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题