Когда я отправляю два запроса ajax вместе, используя JQuery .. ответ приходит вместе
$.ajax ({ type: "POST", url: 'ajax.php' }); $.ajax ({ type: "POST", url: 'ajax2.php' });
ajax.php, ajax2.php – это два файла, содержащие фиктивный для цикла цикл около 5 секунд.
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 секунд.
POST localhost / web / frontend_dev.php / module / action1 200 OK 4.47s
POST localhost / web / frontend_dev.php / module / action2 200 OK 9.87s
Обратите внимание, что второй запрос, выполненный после первого, завершен, я не знаю, почему это произошло
Когда приходит запрос, и он пытается начать сеанс, php проверяет, используется ли тот же сеанс в данный момент. Если это так, новый запрос должен ждать завершения другого запроса или освобождения блокировки сеанса.
Ваш случай следующий:
По умолчанию 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 });
?