Вывести кто онлайн через базу данных ? - MySQL

211
11 мая 2018, 14:55

Ребята подскажите как вывести в админку кто сейчас онлайн на сайте авторизованные пользователи + нужно вывести на страницы объявления где указано имя пользователя онлайн он или офлаин. Может кто поделится скриптом с инструкцией?

Также нужна функция которая создаст нужный столбец в базе данных так как там я вообще не чего не понимаю. Или может это можно привязать к id_akk ?

Answer 1

Необходимо в таблице пользователей создать столбец last_activity(последняя активность) с типом данных хранящим дату, например timestamp, и при любом действии пользователя менять в ней значение на NOW().

После чего определять кто онлайн можно используя эту колонку.

Например, можно считать онлайн людей, у которых last_activity-time()<5.

Answer 2

Лучше всего это делать в каком нибудь in-memory key-value хранилище(Memcached, Redis) с возможностью устаревания данных.

При каждом авторизованном действии пользователя или при авторизации(не путать с аутентификацией) обновляете значение в кеше, например.
При деаутентификации удаляете значение.

Когда нужно, получаете список живых значений.

Пример на Redis:

SET users_online_42 42 60 ; set user#42 online for next 60 sec
DEL users_online_42       ; set user#42 offline
KEYS users_online_*       ; список ключей для пользователей онлайн, можно получить конкретный id как подстроку или через GET key
READ ALSO
Скопировать столбец из одной базы в другую?

Скопировать столбец из одной базы в другую?

Ребята такой вопрос есть две одинаковые базы данных mysql baza1 и mysql baza2 , мне нужно из baza1 c таблицы board скопировать два столбца и перенести их в baza2 в таблицу...

195
Ошибки во встроенных библиотеках xutility и vector (Visual Studio 2012)

Ошибки во встроенных библиотеках xutility и vector (Visual Studio 2012)

Компилировал на Visual Studio 2012В самом коде ошибок нет, но если нужен код, то:

212
Ошибка: &#39;resize_callbac&#39;: undeclared identifier. В чем может быть ошибка?

Ошибка: 'resize_callbac': undeclared identifier. В чем может быть ошибка?

Думаю, в том, что он объявлен и определен после использования

233