скрипт, чтобы сказать мне, кто и сколько пользователей онлайн - PullRequest
5 голосов
/ 20 февраля 2009

В своем исследовании, чтобы найти способ заставить PHP говорить мне, сколько людей «в сети» на моем сайте, я обнаружил, что есть способы «оценить» это.

Я решил регистрировать все, что происходит на сайте, а также ради управления ошибками, но теперь я застрял при написании своего SQL-запроса.

В основном у меня есть база данных с IP, userid и datetime, и я решил, что такой запрос поможет:

SELECT distinct(IP), datetime 
FROM `bigBrother` 
WHERE datetime BETWEEN DATE_SUB(NOW(), INTERVAL 3 MINUTE) AND NOW()

Проблема в том, что мой сайт в основном просматривается и используется учащимися в школьной сети, и, ну ... все они имеют одинаковый IP.

Итак, вопрос в том, правильно ли я это делаю, и могу ли я выбрать две отдельные строки из своей базы данных, чтобы я мог отсортировать зарегистрированных пользователей (у которых будет 'userid' - у других будет userid = 0)

Ответы [ 3 ]

11 голосов
/ 20 февраля 2009

Просто используйте идентификатор сессии вместо IP.

3 голосов
/ 20 февраля 2009

Используйте куки вместо IP-адресов.

PHP делает это очень простым благодаря сессионному механизму. Сначала вы делаете session_start () , а затем используете значение, возвращаемое session_id () , в качестве идентификатора посетителя, который вы можете поместить в свою базу данных.

2 голосов
/ 20 февраля 2009

Я создал систему для школьного сайта, которая также запрашивала эту функцию, и вот как я это сделал.

У меня была таблица пользователей, в этой таблице было поле «online_time»

На каждой странице вызывается функция, если пользователь вошел в систему, которая обновляет "online_time" до текущего времени этого пользователя. (UnixTime)

Тогда у меня была функция «Кто онлайн», которая смотрела на «online_time» и показывала всем пользователям время онлайн за последние 5 минут.

РЕДАКТИРОВАТЬ к комментарию:

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

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