HI Я использую symfony2 для обработки некоторых длинных вызовов API
например, этот вызов занимает около 20 минут, чтобы завершить
$response = simplexml_load_file($apicall);
Проблема в том, что когда я открываю любое другое действие в другой вкладке. В основном нужно подождать до окончания 20 минут, чтобы загрузить результат. Я перепробовал все. Я знаю, что это может быть связано с блокировкой сеанса, но я пытался закрыть сеанс с помощью
$session = $this->get('session');
$session->save();
а также
session_write_close();
но ничего не работает. Я пытался закрыть сеанс до вызова API и после вызова API. Кто-нибудь знает, что мне делать? Прошло 2 дня с этим.
Это не относится к Symfony2
— это просто как php
и сессии работают. Чтобы убедиться в этом, вы можете попробовать вызвать другое действие в приватном окне или другом браузере (чтобы убедиться, что это другой сеанс), пока ваш длинный вызов API все еще находится в ожидании — этот запрос должен обрабатываться без проблем (если только ЦП свободен).
Есть несколько способов исправить это, но, насколько я знаю, нет быстрого и простого решения. Я бы посоветовал запустить длинный API-вызов в другом процессе (чтобы он не блокировал сеанс) и выполнить другое действие, которое проверит, завершена ли ваша исходная задача, — если это так, верните результат.
Ты можешь проверить этот для вдохновения
Обратите внимание, что закрытие сессии не поможет, так как при новом запросе к серверу запускается новый сеанс.
Других решений пока нет …