Как определить, сколько сейчас в данный момент загрузили у себя в браузерах сайт. Вовсех примерах, что нашел принцип один - определяется IP
юзера, фиксируется в файле на сервере, и время входа:
IP|time()
Затем проверка iP очередного юзера в файле, и определяется , был ли уже на сайте до определеного момента раньше, и инкремент счетчика.
Это число выводится, кака число готей online. Непонятно, как учитывать, что часть гостей уже ушли с сайта в своих браузерах, их нет online?
1. mshdn - 25 Января, 2011 - 09:14:22 - перейти к сообщению
2. Uchkuma - 25 Января, 2011 - 09:55:27 - перейти к сообщению
Должно быть не время входа, а время последнего обращения. Если время от последнего обращения превысило какой-то заданный лимит, считать, что юзер оффлайн.
Но в любом случае, такой скрипт не даст верное количество пользователей, т.к. будет считать всех юзеров на одном ip за одного.
Но в любом случае, такой скрипт не даст верное количество пользователей, т.к. будет считать всех юзеров на одном ip за одного.
3. lavrik - 25 Января, 2011 - 10:00:37 - перейти к сообщению
Создаешь в базе таблицу с полями ip и последнее время входа.
Пишешь скрипт, срабатывающий при каждом входе пользователя. Этот скрипт будет проверять, есть ли в этой таблице IP пользователя который вошел. Если есть - обновляешь время на текущее + 5 минут (для погрешности, без нее работать нормально не будет). Если нет - добавляешь (также + 5 минут).
В этот скрипт дописываешь: перебираешь все строки таблицы. Если хоть одна запись времени меньше текущего времени - запись просрочена. Удаляешь ее.
Потом просто считаешь количество записей в таблице и вот тебе число пользователей онлайн.
Пишешь скрипт, срабатывающий при каждом входе пользователя. Этот скрипт будет проверять, есть ли в этой таблице IP пользователя который вошел. Если есть - обновляешь время на текущее + 5 минут (для погрешности, без нее работать нормально не будет). Если нет - добавляешь (также + 5 минут).
В этот скрипт дописываешь: перебираешь все строки таблицы. Если хоть одна запись времени меньше текущего времени - запись просрочена. Удаляешь ее.
Потом просто считаешь количество записей в таблице и вот тебе число пользователей онлайн.
4. Uchkuma - 25 Января, 2011 - 10:11:03 - перейти к сообщению
В качестве доработки вышеупомянутого скрипта: вместо IP создать поле для md5-хеша строки, состоящей из IP и юзерагента. Это даст более объективные результаты.
Для еще более точных результатов, надо каждому пользователю через куки выдавать уникальный id, и его использовать для идентификации пользователя.
Для еще более точных результатов, надо каждому пользователю через куки выдавать уникальный id, и его использовать для идентификации пользователя.
5. JustUserR - 25 Января, 2011 - 15:55:37 - перейти к сообщению
mshdn пишет:
В качестве возможного варианта позволяющего осуществить определения количества пользователей просматривающих заданную web-страницу допустимо использование технологий интерактивных транспортных элементов типа Iframe/AJAX - такой подход обеспечивает достаточный корректный результат в зависимости от урвоня установленного времени обновления элементов данной системы
Это число выводится, кака число готей online. Непонятно, как учитывать, что часть гостей уже ушли с сайта в своих браузерах, их нет online?
6. mshdn - 25 Января, 2011 - 16:08:43 - перейти к сообщению
JustUserR пишет:
В качестве возможного варианта позволяющего осуществить определения количества пользователей просматривающих заданную web-страницу допустимо использование технологий интерактивных транспортных элементов типа Iframe/AJAX - такой подход обеспечивает достаточный корректный результат в зависимости от урвоня установленного времени обновления элементов данной системы
Спасибо за ответы. А есть ссылки на пример использование AJAX для этого случая?
7. JustUserR - 25 Января, 2011 - 17:01:34 - перейти к сообщению
mshdn пишет:
Пожалуйста! Конкретная реализация предполагаемой задачи на основе описанной схемы - предоставлена здесь http://rips[dot]su/modules/10-script[dot][dot][dot]x-v101-beta[dot]html
Спасибо за ответы. А есть ссылки на пример использование AJAX для этого случая?