Длинный http-запрос Symfony 2, блокирующий все остальные действия, пытался закрыть блокировку сеанса, но не работает?

HI Я использую symfony2 для обработки некоторых длинных вызовов API
например, этот вызов занимает около 20 минут, чтобы завершить

$response = simplexml_load_file($apicall);

Проблема в том, что когда я открываю любое другое действие в другой вкладке. В основном нужно подождать до окончания 20 минут, чтобы загрузить результат. Я перепробовал все. Я знаю, что это может быть связано с блокировкой сеанса, но я пытался закрыть сеанс с помощью

$session = $this->get('session');
$session->save();

а также

session_write_close();

но ничего не работает. Я пытался закрыть сеанс до вызова API и после вызова API. Кто-нибудь знает, что мне делать? Прошло 2 дня с этим.

1

Решение

Это не относится к Symfony2 — это просто как php и сессии работают. Чтобы убедиться в этом, вы можете попробовать вызвать другое действие в приватном окне или другом браузере (чтобы убедиться, что это другой сеанс), пока ваш длинный вызов API все еще находится в ожидании — этот запрос должен обрабатываться без проблем (если только ЦП свободен).

Есть несколько способов исправить это, но, насколько я знаю, нет быстрого и простого решения. Я бы посоветовал запустить длинный API-вызов в другом процессе (чтобы он не блокировал сеанс) и выполнить другое действие, которое проверит, завершена ли ваша исходная задача, — если это так, верните результат.

Ты можешь проверить этот для вдохновения

Обратите внимание, что закрытие сессии не поможет, так как при новом запросе к серверу запускается новый сеанс.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]