如何确保正确读取非常延迟的AJAX调用

时间:2011-08-07 08:30:28

标签: php jquery xml ajax file-processing

我有一个处理许多其他文件的文件,可能需要30分钟来处理。我对前端的文件做了一个AJAX请求。该文件输出到另一个关于完成百分比的临时文件。完成后,它会将成功消息输出为自己的XML输出(而不是tmp文件)。

我遇到的问题是,当处理时间很短时...说最多3分钟,AJAX请求(通过jQuery制作)保持活跃状态​​。但是当处理需要更长的时间(超过4分钟)时会发生超时。并且AJAX连接被切断了。如何防止它并使其保持活着直到浏览器关闭?

1 个答案:

答案 0 :(得分:1)

你将无法做到这一点。除非它是一个彗星服务器,否则可以保持服务器端的连接活动,并且当数据有任何更新时,它会推出内容。

在你的情况下,我能想到的唯一方法是这样做:

function ajax_call () {
$.ajax({
  url : 'get_file_processing_output.html',
  success : function (response) {
     check your response, if file processing is not finished, then call ajax_call() again
     if it is finished, then just do whatever you need.
  },
  timeout : function () {
    time out then directly call ajax_call() again, maybe with a time interval would be better
  }
})
}

我在ajax上面成功回调,因为我觉得你应该回应服务器端的某些事情,告诉客户端处理尚未完成。