Вы используете Symfony PHP Framework, и вам нужно, чтобы сессия пользователя оставалась открытой дольше, когда он выполняет длительную обработку в браузере? У меня есть решение для вас!
В контроллере создайте действие “keepAlive”:
/**
* @Route("keepAlive", name="keepAlive")
* @param Request $request
* @return JsonResponse
*/
public function keepAlive(Request $request) {
$this->get('session')->migrate(); /// Миграция продлевает сессию
return JsonResponse::fromJsonString('{"result":"OK"}', 200);
}
Code language: PHP (php)
Вызов метода migrate() на сессии продлит время жизни текущей сессии пользователя.
Затем браузер может динамически запросить ваше приложение Symfony продлить время жизни сессии, когда это необходимо.
$.ajax({
url: '/keepAlive',
type: "GET",
});
Code language: JavaScript (javascript)
Ajax-вызов действия keepAlive может быть выполнен в любое время в зависимости от ваших потребностей.
В моем случае я делал это, когда пользователь завершал часть обработки, которую он выполнял. Таким образом, я не продлевал сессию, если пользователь больше не был активен.