Социальные сети на PHP и SQL - пользователь онлайн - PullRequest
0 голосов
/ 04 октября 2010

Я хочу настроить обнаружение онлайн на моем сайте.

В моей пользовательской таблице есть строка, в которой хранится дата и время последнего входа. Каждый раз, когда пользователь посещает сайт, его дата обновления обновляется, и пользовательская строка в сети устанавливается на 1 (1 - онлайн, 0 - оффлайн) .

Как изменить строку в сети на 0 (офлайн) , если последний вход был 10 или более минут назад? Цель состоит в том, чтобы найти разницу между датами.

Ответы [ 4 ]

3 голосов
/ 04 октября 2010

cronjob каждые 10 минут?

UDPATE users SET online = 0 WHERE login_date > (NOW() - INTERVAL 10 minute);
0 голосов
/ 04 октября 2010

Сохраните время последнего входа в систему как отметку времени, после чего вы сможете легко сравнить его с текущим временем и узнать, сколько времени прошло с тех пор.

В зависимости от размера вашей пользовательской таблицы, вы можете проверять тех, кто все еще находится в сети, каждый раз, когда кто-то заходит на ваш сайт.

Другой подход заключается в том, чтобы хранить активных пользователей в контейнерах, помеченных как время последнего входа в систему, после чего можно легко сбросить всех пользователей, которые находятся в контейнерах старше 10 минут.

0 голосов
/ 04 октября 2010

Если вы хотите показать пользователей, которые были в сети в течение последних 10 минут, то лучший способ - включить условие datetime в запрос sql.

0 голосов
/ 04 октября 2010

просто для каждого пользователя добавьте отметку времени last_seen в эту строку, чтобы при проверке подлинности вашего пользователя вы могли обновить время

if(logged_in())
{
    update_user();
}


function update_user()
{
    //UPDATE users SET last_seen = unix_timestamp() WHERE uid = X;
}

Тогда вы можете сделать для вас пользователей:

SELECT * FROM users WHERE last_seen > (unix_timestamp()-300)

Чтобы получить последние 5 минут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...