@PetrSmirnov5
PHP, Java script

Как сделать выполнение php кода, когда пользователь закрыл вкладку?

Когда пользователь закрывает страницу, должна быть выполнена функция php. Позже пользователь зайдет вновь и, как результат выполненной функции, моя сессия $_SESSION['name2'] не должна существовать
<?php  
session_start(); 
unset($_SESSION['name2']); 
?>
  • Вопрос задан
  • 283 просмотра
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Посылать запросы на unload/beforeunload события, как рекомендует Алексей Николаев - не очень хорошая идея
Асинхронный запрос будет оборван в произвольное время, и может не дойти до сервера. Синхронный - заблокирует вкладку и создаст неприятный пользовательский опыт.

Специально для таких случаев есть navigator.sendBeackon, который работает асинхронно, но не обрывается при закрытии вкладки (даже если сервер будет держать запрос пол часа - будет работать все ок, я проверял)
Правда если нужна поддержка IE или старых сафари (iOS10 и старее), то все же придется вернутся к синхронным запросам для этих браузеров
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
На JS ловить window.blur или window.unload (точно не помню), по этому событию слать в API запрос, по запросу выполнять нужное действие. Можно пойти от противного: слать hearbeat запросы раз в 30 секунд, если пропустили - значит, вкладка закрыта или интернета нет, соответственно, выполняем функцию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы