Я пытался понять, как работает сон для множественного запроса с той же машины.Как сон работает в PHP для одновременных запросов от одного и того же пользователя [машины]?
Например, я хочу, чтобы отслеживать логин пользователя и выход из системы в одном из моего приложения, и я сделал, как описано ниже:
Ajax запрос отправляется в браузер, когда пользователь пытается закрыть/обновить текущий браузер , То, что я сделал это переплетено событие на странице выгрузке, которая отправляет Ajax запрос на сервере, где я настроил значение сеанса временной метки в сессии и использовал сон (10), как показано ниже ->
//sets the timestamp value
$session->timestamp = time();
//wait if another request arrives withing 10 seconds
sleep(10);
if ($session->timestamp) {
//clear user session here
$session->timestamp = null;
}
С Я хочу только сбросить сеанс только тогда, когда пользователь пытается закрыть вкладку/окно браузера, в этом случае он отлично работает и перезагружает сеанс через 10 секунд.
Но я не хочу перезапускать сеанс в случае обновления страницы. Поскольку в случае обновления страницы снова вызывается событие разгрузки страницы, которое устанавливает значение временной метки в сеансе, но запрос выполняется для обновления, и он устанавливает значение метки времени в самом первом месте, как показано ниже:
if ($session->timestamp) {
$session->timestamp = null;
}
Теперь, о чем я думаю, когда 10 секунд завершено во время вызова предыдущего запроса, значение timestamp имеет значение null, и поэтому сеанс пользователя не должен быть сброшен.
Но как-то это не так. Может быть, я что-то упустил. Может кто-то, пожалуйста, помогите мне на этом?
Я очень смущен. Кажется, вы пытаетесь изобрести сборку мусора для сеансов. Достаточно литературы по этому вопросу. – Halcyon
На самом деле мне нужно отслеживать активность входа/выхода пользователя в мое приложение. Но когда пользователь напрямую закрывает сеанс, нет трека, который либо вышел из системы, либо нет. –
Для этого я добавил событие «onunload», которое отправляется на сервер, и устанавливает значение «timestamp» и заставляет процесс спать за «10 секунд» и ничего не возвращает. Но так как пользователь просто обновляет страницу, он сбрасывает значение timestamp из сеанса. и поэтому я думал, что, когда предыдущий запрос пробуждается [через 10 секунд], он не получит значение timestamp и не должен очищать сеанс пользователя. –