Как убедиться, что ОЧЕНЬ задержанный AJAX-вызов прочитан правильно - PullRequest
1 голос
/ 07 августа 2011

У меня есть файл, который обрабатывает много других файлов и может занять до 30 минут, чтобы обработать. Я делаю AJAX-запрос к файлу в интерфейсе. Файл выводится в другой временный файл относительно процента выполнения. И когда он завершает работу, он выводит сообщение об успешном завершении в виде своего собственного XML-вывода (не в файл tmp).

Проблема, с которой я сталкиваюсь, заключается в том, что, когда время обработки невелико, скажем, максимум до 3 минут, запрос AJAX (сделанный через jQuery) остается живым. Но тайм-аут возникает, когда обработка занимает больше времени (более 4 минут). И соединение AJAX разрывается. Как я могу предотвратить это и заставить его остаться в живых, пока браузер не закроется?

1 Ответ

1 голос
/ 07 августа 2011

Вы не сможете этого сделать.Если это не кометный сервер, который может поддерживать соединение на стороне сервера и когда происходит какое-либо обновление данных, он выталкивает содержимое.

В вашем случае, единственный способ, которым я могу думатьделает это:

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, потому что я чувствую, что вы должны что-то ответить со стороны вашего сервера, чтобы сказать клиенту, что обработка еще не завершена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...