отправьте два запроса ajax одновременно в symfony

Когда я отправляю два запроса ajax вместе, используя JQuery .. ответ приходит вместе

например

$.ajax ({ type: "POST", url: 'ajax.php' }); $.ajax ({ type: "POST", url: 'ajax2.php' }); 

ajax.php, ajax2.php – это два файла, содержащие фиктивный для цикла цикл около 5 секунд.

Экран FireBug

POST localhost / ajax.php 200 OK 4.77s
POST localhost / ajax.php 200 OK 4.37s

Здесь каждый запрос занимает около 5 секунд для исполнения …..

Когда я делаю тот же пример в symfony, я получил другой результат

 $.ajax ({ type: "POST", url: 'module/action1' }); $.ajax ({ type: "POST", url: 'module/action2' }); 

action1, action2 – это два действия, которые просто содержат фикцию для цикла, занимают около 5 секунд.

Экран FireBug

POST localhost / web / frontend_dev.php / module / action1 200 OK 4.47s

POST localhost / web / frontend_dev.php / module / action2 200 OK 9.87s

Обратите внимание, что второй запрос, выполненный после первого, завершен, я не знаю, почему это произошло

Solutions Collecting From Web of "отправьте два запроса ajax одновременно в symfony"

Когда приходит запрос, и он пытается начать сеанс, php проверяет, используется ли тот же сеанс в данный момент. Если это так, новый запрос должен ждать завершения другого запроса или освобождения блокировки сеанса.

Ваш случай следующий:

  • первый запрос прибывает, блокировка сессии
  • второй reauest прибывает, пытается заблокировать сеанс, должен ждать
  • [5 секунд сна]
  • первый запрос заканчивается, блокировка блокировки
  • запускается второй запрос, достигается блокировка сеанса
  • [5 секунд сна]
  • второй запрос заканчивается

По умолчанию symfony запускает сеанс в начале каждого запроса.

В чистом PHP вы можете освободить блокировку файла сеанса с помощью session_write_close() . Symfony имеет класс sfUser, который обертывает функциональность сеанса, вам нужно вызвать метод shutdown() .

Имейте в виду, что если вы измените данные сеанса позже в этом запросе, он не будет сохранен.

Для более подробного объяснения прочитайте блокировку записи PHP Session и как справиться с ней в symfony .

Возможно, symfony делает что-то для ajax-запросов. Что произойдет, если вы попробуете:

 $.ajax ({ type: "POST", url: 'module/action1', async: true }); $.ajax ({ type: "POST", url: 'module/action2', async: true }); 

?