Есть ли способ выполнить код для уничтожения сессии в Laravel? - PullRequest
0 голосов
/ 09 июня 2019

Я пытаюсь реализовать отслеживание времени для моей пользовательской CRM.Основная идея состоит в том, чтобы использовать кнопку-переключатель, чтобы я мог сохранить «start_time» и «end_time» для этой конкретной задачи, и разница между этими двумя будет представлять собой затраченное время.Но что, если пользователь закрывает браузер или выключает компьютер, существует ли событие для уничтожения сеанса, чтобы я мог вставить «end_time» после уничтожения сеанса?

Ответы [ 2 ]

0 голосов
/ 09 июня 2019

Сессия не обязательно уничтожается при закрытии окна.Вы могли бы определить некоторые события для onbeforeunload:

window.onbeforeunload = function(){
   // Send a request to the server to notify it of the window being closed/refreshed
}

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

Вы также можете установить дуплексный канал, например, канал WebSocket , чтобы ваш сервер знал, когда он сломался.

0 голосов
/ 09 июня 2019

Вы не можете действительно полагаться на сеанс laravel, который будет немедленно удален, если он истечет, поскольку я считаю, что он основан на лотерейной системе, которая очищает сеансы как 1 в каждых 100 запросах.

Я предлагаю реализовать что-то с помощью пинга ajax, чтобы вы могли сказать, что пинг прекратился, когда пользователь закрывает свой браузер. На самом деле нет другого способа узнать, закрыл ли пользователь свой браузер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...