2015-05-06 175 views
0

我从客户端的Ajax调用,这看起来像:如何在jQuery中的Ajax请求处理504响应头?

$.ajax({ 
      'url': '/converter/ajax-make-corrections/', 
      'data': { 

       corrections: JSON.stringify(globalCorrrectionsObject) 
      }, 
      type: 'POST', 
      success: function(data) { 

      } 
     }) 

这个动作发送相当大的文件服务器做一些服务器的工作。问题在于服务器上有时间限制 - 30分钟。之后,服务器关闭与504 errror连接(这里是我看到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响应?它会重新启动自己再次发送相同的数据?

+0

你可以看看在检查网络标签,看看Ajax调用并重新开始? ajax调用只会触发一次,而不是多次,检查你的页面,看看是否有东西触发它发射9x? –

+0

必须尝试增加执行时间吗? – sitilge

回答

1

$ .ajax操作在获得504响应后自动重新启动。可能吗?它会重新启动自己再次发送相同的数据?

在这种特殊情况下,我会说没有。您提供的脚本中没有任何内容可以提出请求。

$ .ajax如何处理504响应?

error: function (request, status, error) { 
    alert(request.responseText); 
} 

也尽量增加max_execution_time

ini_set('max_execution_time', 3600); //1 hour