Несколько одновременных запросов AJAX в ExtJS 4 - PullRequest
6 голосов
/ 26 октября 2011

Проблема

У меня есть долгосрочное задание импорта, которое я запускаю с помощью запроса ajax, до завершения запроса может пройти несколько минут.Пока выполняется первый запрос ajax, я хочу взглянуть на сервер, чтобы узнать, как далеко зашёл импорт, этот второй запрос будет выполняться каждые 2 секунды или около того.

Когда я использую Ext.Ajax метод, по которому запросы кажутся связанными - первый ajax-запрос (импорт) выполняется до его завершения, а затем запускается второй (обновление импорта).

Я видел, что Ext.Ajax одноэлементный, поэтому, возможно,вот в чем причина.Поэтому я попытался создать свои собственные объекты Connection с Ext.create('Ext.data.Connection'), но это не сработало.

Моя текущая цепочка запросов:

  • первый запрос -начало
  • первый запрос - конец
  • второй запрос - начало
  • второй запрос - конец

но это должно быть:

  • первый запрос - начало
  • второй запрос - начало
  • второй запрос - конец
  • ... возможно, больше вторых запросов
  • первый запрос - конец

Вопрос

Браузер должен уметь обрабатывать несколько запросов, в ExtJS должно быть ограничение, но я этого не сделал


Обновление 2011-10-16

Ответ

Проблема не в ExtJS - извините!Это был PHP, мой первый скрипт работал с сессией, а второй пытался получить доступ к сессии.А поскольку сеансы PHP основаны на файлах, файл сеанса был заблокирован из сценария первого запроса, а сценарию второго запроса пришлось подождать до первого снятия блокировки сеанса.

Я решил эту проблему с помощью этого небольшого фрагмента кода, который ядобавлен в мой процесс импорта (первый сценарий) после каждой строки x:

 $id = session_id();
 session_write_close();
 sleep(1);
 session_start($id);

Таким образом, он останавливает и перезагружает сеанс, а другой сценарий смог подключиться и получить информацию о сеансе.

1 Ответ

5 голосов
/ 26 октября 2011

Синглтон или не синглтон даже не меняет способ работы Ext.Ajax. Я думаю, что это может быть связано с кодировкой (вы ждали, когда вызовы закончатся?)

Афаик, у меня никогда не было этой проблемы, когда я делаю несколько звонков. Единственное, что вызывает вызовы - это сервер (PHP), который не поддерживает параллельную обработку и вызывает задержки, и генерирует шаблон, подобный этому

  • Звонок 1 - начало
  • Звонок 2 - начало
  • вызов 1 обрабатывается на сервере, а вызов 2 помещается в очередь
  • Звонок 1 - закончен
  • Вызов 2 обрабатывается на сервере
  • Звонок 2 - закончено

Это может иметь катастрофические последствия, если вызову 1 требуется больше времени для обработки, чем вызову 2.

EDIT:

Я написал эту маленькую демонстрацию только для того, чтобы вы почувствовали, как она работает. Проверьте это :) Потратил меня полчаса лол!

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