AJAX请求60秒后返回504错误,调整PHP等超时配置仍未解决怎么办
504超时问题解决步骤
- 首先调整前端AJAX的超时配置
jQuery AJAX默认继承浏览器的XHR超时规则,多数浏览器默认单请求最大超时时间为60秒,你需要显式在AJAX配置中添加timeout参数,单位为毫秒,示例修改后代码如下:
$.ajax({ type: 'GET', url: post_url, data: post_data, timeout: 120000, // 新增配置,设置超时时间为120秒 success: function(msg) { $("#loading").hide(); $(box).fadeOut(0, function(){ box.html(msg).fadeIn(0); }); }, error: function(xmlhttprequest, textstatus, message) { if(textstatus==="timeout") { alert("got timeout"); } else { alert(textstatus); } } });
- 检查Web服务的超时配置
- 如果使用Nginx作为Web服务,仅修改全局Timeout不生效,需要在站点配置的server或对应PHP处理的location块中添加如下配置:
修改完成后执行fastcgi_read_timeout 120; proxy_read_timeout 120;nginx -s reload重载配置生效。- 如果使用Apache作为Web服务,确认httpd.conf中的
TimeOut 120配置已经生效,修改后重启Apache服务。
- 检查PHP-FPM的超时配置
如果使用PHP-FPM模式运行PHP,需要修改php-fpm.conf配置文件中的request_terminate_timeout参数,该参数优先级高于php.ini中的max_execution_time,默认值多为60s,将其调整为120后重启PHP-FPM服务生效。 - 确认PHP配置实际生效
可以在测试脚本中添加phpinfo();输出当前运行配置,确认max_execution_time、max_input_time参数是否为你设置的数值,避免出现修改了错误的php.ini文件(CLI模式和FPM模式通常使用独立的php.ini配置)导致配置不生效的问题。
内容的提问来源于stack exchange,提问作者blooblabb
相关产品推荐
相关产品推荐

