1 голос
 
489 просмотров
3.02.2019 / 22:46  Nolosha

Время 'Еще онлайн'

Annimon, у вас на сайте есть список онлайн юзеров. Так вот, представим что:
Если у нас какой-нибудь юзер не преходил на другие страницы уже [n] времени то исключаем его из списка онлайн.
Подскажите мне, сколько лучше делать ожидание, иль в каком диапазоне.
Ответы
 
2 голоса
 
# 4.02.2019 / 00:30  aNNiMON
Удалять из списка онлайн и вообще постоянно мониторить кто там сколько отсутствовал – накладно.
Проще при каждом открытии пользователем любой страницы, записывать в БД время его обращения к сайту. А потом делать выборку по разнице текущего времени и времени последнего обращения.

Код
1. Пользователь обратился к любой странице – записываем время сервера в БД. В таблице пользователей должен быть соответствующий столбец:
  1. $stmt = $pdo->prepare(
  2.         'UPDATE users SET last_access = ?
  3.          WHERE id = ?');
  4. $stmt->execute([time(), $userId]);

2. Выводим список онлайн. То есть тех пользователей, у которых последнее обращение к сайту в пределах N минут. На этом сайте порог 5 минут.
  1. $stmt = $pdo->prepare(
  2.         'SELECT * FROM users
  3.          WHERE last_access > ?');
  4. $stmt->execute([time() - 5 * 60]);
  5. $onlineUsers = $stmt->fetchAll();
Всего: 1

Реклама

Мы в соцсетях

tw tg yt gt