【发布时间】:2015-05-06 08:05:49
【问题描述】:
我有一个来自客户端的 ajax 调用,看起来像这样:
$.ajax({
'url': '/converter/ajax-make-corrections/',
'data': {
corrections: JSON.stringify(globalCorrrectionsObject)
},
type: 'POST',
success: function(data) {
}
})
此操作将相当大的文件发送到服务器以执行某些服务器工作。问题是服务器上有时间限制 - 30分钟。在该服务器关闭与 504 错误的连接后(这是我在 nginx 访问日志文件中看到的):
[06/May/2015:09:13:33 +0300] "POST /converter/ajax-make-corrections/ HTTP/1.1" 504
同时在 nginx error.log 文件中
*1799741 upstream timed out (110: Connection timed out) while reading response header from upstream, client:
apache 日志中没有错误。
这就是发生的事情:来自浏览器的操作在 30 分钟后重新启动了 9 次。由于浏览器中的操作无法使用相同的数据第二次手动启动,我最好的猜测是 $.ajax 操作在收到 504 响应后会自行重启。是否可以? $.ajax 如何处理 504 响应?它会重新启动自己再次发送相同的数据吗?
【问题讨论】:
-
你能看一下检查器中的网络选项卡,看看 ajax 调用是否重新启动了吗? ajax 调用只触发一次,而不是多次,检查你的页面,看看是否有什么东西触发它触发 9 倍??
-
必须尝试增加执行时间?
标签: javascript php jquery ajax nginx