[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: счетчик посетителей
deardeer
нужна помощь в создании счетчика посетителей сайта за последние n минут. где лучше хранить данные? какая функция возвращает дату последнего действия пользователя на сайте? как удалять офлайн пользователей из бд?



Спустя 31 минута, 6 секунд (13.03.2011 - 17:23) sochinec написал(а):
1. MySQL
2. считать время открытой сессии. Или IP адреса если есть ситема рЕгистрации авторизации
3. По истечению СЕССИИ

Спустя 20 минут, 44 секунды (13.03.2011 - 17:44) Guest написал(а):
допустим я создал таблицу с столбцами IP и lastactive, при каждом заходе на сайт пользователя проверяется если ли его IP в БД, если нет то создается новая строка, если есть то lastactive обновляется. сам скрипт берет все ластактивы которые меньше настоящего времени на 20 минут и плюсует их, получая переменную $count. однако при таком подходе бд может содержать очень много строк, как организовать их удаление. еще как быть с пользователями с динамическим IP? пользователей использующих один и тот же местный провайдер у которого один ip на всех и тд? использовать cookies? тогда как быть с теми у кого вышеперечисленное и отключенный куки?

Спустя 2 минуты, 52 секунды (13.03.2011 - 17:47) sochinec написал(а):

Спустя 10 минут, 30 секунд (13.03.2011 - 17:57) Guest написал(а):
допустим. а как быть с удалением строк?

Спустя 11 минут, 3 секунды (13.03.2011 - 18:08) imbalance_hero написал(а):
deardeer
1) User => lastactive. При выборе указываешь интервал в 15 минут от времени сейчас, сколько записей попадает под этот диапазон - столько пользователей в сети. Так и по отдельности проверяется.
Обновляется ячейка lastactive у пользователя при любом его действии на сайте.

Спустя 1 минута, 56 секунд (13.03.2011 - 18:10) sochinec написал(а):
1) Стартуем сессию.
2) Получаем SID.
3) Ищем его в таблице БД.
4) Если не находим добавляем запись с временем
5) Если находим обновляем время
6) Одновременно с 4,5 пунктом идет сверка с уже имеющимися записями в БД, если например время в поле больше на 20 минут настоящего времени на серваке, значит юзер ушел, или зачитался )))
Удаляешь таблицу.
Как то так..

Спустя 21 минута, 45 секунд (13.03.2011 - 18:32) deardeer написал(а):
благодарю

Спустя 3 часа, 36 минут, 19 секунд (13.03.2011 - 22:08) deardeer написал(а):
сделал так
$dsd=mysql_query("SELECT IP FROM table2");
for ($i=0; $i<mysql_num_rows($dsd); $i++)
{
$fii=mysql_fetch_array($dsd);
if($ipp==$fii[IP]) $yesx=1;
} // проверка существования ip в бд
if ($yesx!=1){
if(!isset($_SESSION['first2'])) // если такого IP в бд нету и нету сессионной переменной
$lll=mysql_query ("INSERT INTO table2 VALUES ('$ipp','$lastactive','$login')");} // создаем новую запись в бд, если IP нету но сессионная переменная уже есть то ничего не делаем (решает проблему с динамическим IP)
else {
if(isset($_SESSION['first2'])) $lll=mysql_query ("UPDATE table2 SET lastactive='$lastactive', login='$login' WHERE (IP like '$ipp')");// если IP уже существует и переменная существует то апдейтим ластактив и логин
else $lll=mysql_query ("INSERT INTO table2 VALUES ('$ipp','$lastactive','$login')");} //если IP существует но сессионной переменной нет - заводим новую запись в БД (решает проблему с прокси сервером, одним IP у нескольких пользователей)
if(!isset($_SESSION['first2'])) $_SESSION['first2']=1; //заводим сессионную переменную

сам запрос на количество пользователей удаляет всех кто ничего не делал в течении 20 минут
все вроде нормально, но если какому нибудь пользователю взбредет в голову выйти из браузера и зайти заново за 20 минут то в БД будут лишние записи (случай если ip уже есть но сессионной переменной нету) а если не добавлять записи при таком раскладе то не будет решена проблема с пользователями у которых один и тот же IP (прокси сервер)
помогите решить данную проблему
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.