Я создал очень простую многопользовательскую игру для учебных целей.
Когда пользователи входят в систему, каждый пользователь получает обновление всех зарегистрированных пользователей.
Когда пользователь входит в системув, он просто устанавливает значение для этого пользователя в базе данных SQL равным 1. Когда они вышли из системы, значение должно быть 0.
Я использую $ (window) .unload (function (){});попытаться поймать закрытие вкладки / браузера, но работает только sortof.
Два вопроса:
Есть ли лучший способ поймать закрытие браузера или вкладки?
В случае, если он пропускает закрытие вкладки, или их машина падает, или интернет-соединение умирает, или пользователь просто уходит с машины, я хочу идти вперед и автоматически выходить из них.
Я использую фронтенд HTML / Jquery с бэкэндом PHP.Что я могу сделать, чтобы выполнить второй вопрос?Я предполагаю, что мне нужно сделать это на PHP ... мы работаем в предположении, что браузер, вероятно, больше не существует, следовательно, не обрабатывает jquery.Может ли PHP сделать что-то с непрерывным таймером, который проверяет, находится ли пользователь по-прежнему ... без простого нажатия пользователем кнопки каждые 10 секунд?
Редактировать: Здесь есть потенциальное решение: Как определить, если пользователь вышел из системы, в php? Но я использую ajax, чтобы избежать обновления страницы.В идеале пользователь будет никогда f5 страницы или нажимать какие-либо кнопки (я тестирую, помните, это не для реального приложения).Будет ли PHP видеть последнее действие без полного обновления страницы?
Edit2: Я добавил следующий код в мой PHP с соответствующей функцией jquery, используя setInterval
if (isset ($_POST['keepalive'])) {
if (filter_input(INPUT_POST,'keepalive') == '1') {
$name = $_SESSION['name'];
$time = time();
mysql_query("UPDATE tictac_names SET keep_alive = '$time' WHERE name ='$name'") or die(mysql_error());
}
}
Это вставляет метку времени unix epoc в мою таблицу, что будет очень просто для простых вычислений.
Теперь у меня вопрос: как мне сказать PHP запускать проверку для каждого вошедшего в систему пользователя, когда X числосекунд?Мой бэкэнд-файл PHP в основном настроен так, чтобы перехватывать пост-переменные и запускать код, а затем возвращать его обратно в jquery.Поскольку этот код предназначен для выхода из неактивных браузеров / пользователей, я не могу полагаться на jquery, отправляющий запрос в PHP, и PHP не обновляется.Нужно ли выполнять какую-то работу cron или что-то странное, чтобы PHP проверял всех пользователей, которые не обновлялись в течение последних X секунд?
Справка!