Подсчет посетителей сайта

dmsuslov

Новичок
Подсчет посетителей сайта

Ищу идею или готовое решение (чтобы подсмотреть идею :) ) для подсчета посетителей сайта.
Нужно на страницах сайта выдавать что-то типа того:

Онлайн всего: 106
Гостей: 102
Пользователей: 4
 

HraKK

Мудак
Команда форума
а что именно вызывает затруднение-то?
 

dmsuslov

Новичок
Как сделать это по возможности проще?
Можно вести в БД таблицу последних обращений к скриптам для разных IP-адресов, а потом делать выборки оттуда. Это первое что приходит в голову.
Но у меня есть ощущение, что это не самый лучший способ.
 

Активист

Активист
Команда форума
dmsuslov
>разных IP-адресов
Начни с того, что пользователь идентифицируется по сессии.

"Онлайн всего" - количество уникальных сессий, которые были активны (переходили по страницам) за последние 15 минут.

"Гостей" не авторизированные пользователи (сессии) из "он лайн всего"

"Пользователей" - всего онлайн минус количества гостей
 

Фанат

oncle terrible
Команда форума
куда там проще?
записал-прочитал. две операции, 10 строк кода.
даже бд не нужна, файла хватит

-~{}~ 02.12.08 16:27:

Активист
не слишком ли ты загнул про 15 минут? У тебя юзеры на каждой странице по 15 минут сидят?

И при чем здесь сессии?
 

dmsuslov

Новичок
Хорошо. Я так понял что первое что пришло мне в голову - и есть самое лучшее. Точнее, никто ничего принципиально другого не знает. Разные лишь методики. Это радует.

Тогда продолжение вопроса: как отличать "Гостей" друг от друга? Писать им в куки что-то уникальное, потом по этим значениям ориентироваться? Или же основываться на IP-адресах (а еще лучше IP+строка идентификации браузера)?
 

Активист

Активист
Команда форума
*****
15 минут - среднее значение, не "много" и не "мало". Я например баш орг могу читать и больше 15 минут). Конечно, все зависит от конкретного проекта.

> И при чем здесь сессии?
А как подсчитывать количество уникальных пользователей на сайте? Я как кроме использования "Сессий" в качестве уникального идентификатора пользователя (как гостя, так и авторизованного пользователя) других способов не вижу.

-~{}~ 02.12.08 16:59:

Да, под фразой "Сессия" подразумевалось "Уникальный идентификатор сессии"
 

dmsuslov

Новичок
Автор оригинала: Активист
*****
15 минут - среднее значение, не "много" и не "мало". Я например баш орг могу читать и больше 15 минут). Конечно, все зависит от конкретного проекта.

> И при чем здесь сессии?
А как подсчитывать количество уникальных пользователей на сайте? Я как кроме использования "Сессий" в качестве уникального идентификатора пользователя (как гостя, так и авторизованного пользователя) других способов не вижу.

-~{}~ 02.12.08 16:59:

Да, под фразой "Сессия" подразумевалось "Уникальный идентификатор сессии"
А как скрипт, выполняющийся в одной сессии, может "видеть" скрипты, выполняющиеся в других сессиях? Смотреть на временный каталог с файлами сессий?
 

Активист

Активист
Команда форума
dmsuslov
Берешь таблицу в бд.

При каждом открытии страницы делаешь следующее:

1. Если уникальный идентификатора сессии нет в БД - вносишь новую запись, в которой содержится
session (тип string, primary key), last_action (тип timestamp), is_auth (enum "1", "0")

Где
session - уникальный идентификатор
last_action - время последнего действия (как при добавлении, так и при обновлении всегда равно NOW())
is_auth - гость или пользователь

2. Если уникальный идентификатор сессии есть в БД - обновляешь время последнего (last_action) действия до now()

3. Удаляешь из таблицы в БД устаревшие записи

4. Путем выборки из бд получаешь количество ОН-ЛАЙН (всего записей), количество гостей, количество пользователей.
 

dmsuslov

Новичок
Ясно. С SESSION_ID, пожалуй, получше будет.

В идеале, хотелось вообще без БД обойтись: типа посмотреть на количество сессионных файлов во временном каталоге и все. :)
 

Фанат

oncle terrible
Команда форума
Активист, 15 минут - не "среднее", а завышенное значение, раз в 10.
впрочем, поскольку цифра для услады глаз, можно взять и 150
как подсчитывать количество уникальных пользователей на сайте?
регов - по id. анрегов - по ip.
 

Активист

Активист
Команда форума
*****
Количество пользователей из сетей с одним IP - очень много (различные городские сети, офисы, районные сети, CDMA абоненты), так что по IP - большой процент ошибок.
 

Фанат

oncle terrible
Команда форума
Активист, ага, и все они дружно ломятся на один этот несчастный сайт.
КАКОЙ процент ошибок? Какой конкретно? В цифрах? Какую часть от процента ошибок самой этой идиотской цифры - "сейчас на сайте" он составляет?
почему нельзя написать точно, на примере среднего сайта? почему надо обязательно применять оценочные категории - "много, медленно"?
"Этот скрипт ужасно тормозит". ага. когда начинаем мерять, торможение на фоне остальных процессов не различимо.
Когда начинаем смотреть реальные цифры, это "много" превращается в 1-2% в обе стороны.

Ну что за детский сад?
Что вы повбивали себе в головы каких-то констант умозрительных, на основании которых дальше принимаете решения. "я такой умный я знаю про NAT". Ага, следующим шагом будет писать в логи форвардед фор. Тоже блин, от большого ума.
В реальности свои рассуждения про "большой процент" не пробовал проверять?
ВСЕ счетчики до сих пор считают по хостам, не отказываются от них. Хоть и показывают еще неких "посетителей". Почему? Потому что "посетитель" - понятие эфемерное, алгоритм мутный. А хост - конкретное.
И при этом разница - 3-5%.

Ты задачу помнишь? Показать на сайте циферку. просто для красоты. НА КОЙ РАДИ НЕЕ СТАРТОВАТЬ БОТАМ СЕССИЮ? При том, что даже сессия нам не даст точной картины. Логика где?
Ну я понимаю еще - ты бы платил рубль каждому пришедшему. Тут да, имело бы смысл корпеть. Но здесь?!

-~{}~ 03.12.08 10:52:

И со временем просмотра страницы та же байда.
"Я *могу* просидеть на одной странице" 30 минут.
Какое это блин нахрен имеет значение, что ты можешь? На одной из тысячи?
 

HraKK

Мудак
Команда форума
*****
Ром, что ты тут распинаешься? Для кого?
 

Gremboloid

инженера Гр...
*****
Лично мне, информация написанная тобой, полезна.
Спасибо.
 

Iskman

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

Фанат

oncle terrible
Команда форума
вопрос был не куда писать, а как определять этот "статус"
 
Сверху