Подсчет количества онлайн-посетителей? - PullRequest
1 голос
/ 06 июня 2010

Мне нужно показать количество онлайн-посетителей, но есть проблема с выбором алгоритма для этого! возможно я должен создать таблицу в DB, где я буду хранить IP-адреса посетителей и время посещения! таким образом, я могу показать количество IP-адресов, время которых> = NOW () - 10 минут, например ... ("now () - 10 минут" - просто показать логику, я знаю, что это не функция:)

это путь Гуго?

Пожалуйста, дайте мне идею.

Спасибо

Ответы [ 5 ]

3 голосов
/ 06 июня 2010

Это хороший учебник. Обратите внимание, что таблица онлайн-пользователей mysql (я думаю, вы ее используете) должна быть напечатана как MEMORY.

1 голос
/ 06 июня 2010

Отслеживание «посетителей» (в отличие от необработанных запросов страниц, которые веб-сервер должен отслеживать самостоятельно) - сложная задача.

Вы можете хранить IP-адреса, как вы описали, но как насчет посетителя, который использует прокси-сервер, который поворачивает свой IP так часто, как каждая страница загружается? Как насчет группы посетителей, использующих один и тот же прокси-сервер, который использует один и тот же IP для всех них?

Моя рекомендация: не пытайтесь делать это самостоятельно, а воспользуйтесь бесплатной услугой Google Analytics . Он отслеживает посетителей, браузеры, источники трафика и практически все, что вы, возможно, захотите узнать о том, кто просматривает ваш сайт.

1 голос
/ 06 июня 2010

Я не совсем уверен, как бы вы использовали AJAX для хранения данных ...

Я лично использую решение для базы данных.

Я храню user_id, last_seen, IP и местоположение на сайте (но это не обязательно просто для подсчета).

Когда пользователь запрашивает страницу, обновите столбец last_seen и удалите все записи с NOW()-last_seen больше, чем x минут.

0 голосов
/ 06 июня 2010

Да, алгоритм ок. в общем, но с некоторыми исправлениями

Может быть, вы хотите сначала удалить все устаревшие записи, а затем просто посчитать остальные.
10 минут это слишком много. 1-3 - среднее время, проведенное пользователем на странице.
Проект AJAX забавен, но не имеет ничего общего с хранилищем. Вам нужно больше узнать об условиях клиент-серверного приложения. AJAX - это транспорт, а не склад.

0 голосов
/ 06 июня 2010

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

Если это так, я бы предложил написать сценарий CLI, который будет очищать старые записи и запускать его в cronjob. Таким образом, пользователь не заметит никакой задержки, так как время разбора будет потрачено на CLI.

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