Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Создание системы учета посещений

© Андрей Головин
http://exper.ural.ru/

У вас может возникнуть вопрос, зачем это нужно? Свои услуги предлагают более десятка российских и огромное множество иностранных систем статистики. Так зачем лишний раз напрягаться, писать и отлаживать скрипты, создавать базы и, вообще, совершать какие-либо телодвижения, когда, потратив 10 минут, мы получим полноценную систему статистики, которая предлагает нам, просто, безграничное количество данных о пользователях нашего сайта?

Причин две. Во-первых, "внешняя" система статистики создают ощутимую задержку в загрузке страницы. Во-вторых, одному интересно узнать больше о графической системе пользователя, другому - о версиях браузера, а третьему - время проведенное пользователем на его сайте. Но, как оказывается, одна система дает инормацию о графической системе, вторая - о времени посещений, третья - вообще, не дает такой инормации, зато наиболее точно считает количество посетителей. Что делать? Вот и начинаем мы с вами ставить на страницу один, два, а потом и все пять счетчиков, после чего, время загрузки полезной информации составит не более 10% от времени загрузки сайта. Это приведет к тому, что посетитель плюнет и уйдет (интернет-то большой) или информации о нем не попадет в системы статистики. Вот тут-то мы и приходим к осознанию того, что система нужна своя.

Какие преимущества это дает? Во-первых, скорость загрузки. Цифры статистики можно вывести текстом, что не задержит загрузку, а обработка статистики будет производится на том же сервере, что и страница, что не внесет дополнительных задержек на установление связи с удаленным сервером. Во-вторых, такая система, изначально, будет соответствовать нашим запросам. Хотим - будем учитывать параметры графической системы пользователей, хотим - будем считать, сколько раз пришел за последние 15 секунд Вася Пупкин. В-третьих, так как такая система является неотъемлемой частью сайта, то не будет потеряно ни одного хита!

Здесь я не буду приводит конкретных скриптов, потому, что это будет очень громоздко, да и не нужно, вы, ведь, пришли разобраться во всем этом? Я изложу только основные принципы.

Для реализации подобной системы я использовал слудующее программное обеспечение:

Базы данных: mySQL
Скрипт: PHP
Вебсервер: Apache.

Сначала определимся, какие параметры мы хотим учитывать. Для себя я считаю важным знать, сколько пользователей пришло на сайт, сколько хитов они принесли, какие страницы посетили и откуда пришли и время каждого хита.

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

hits: Хранит подробную информацию о хитах за текущий день. Содержит следующие поля:

ИмяКомментарий
hostбуквенное имя домена пользователя
addrIP адрес пользователя
referer ссылка, по которой пришел пользователь
pageна какую страницу сайта пришел пользователь
timestвремя хита.

hitsbypage: хранит инормацию за весь период по посещениям страниц сайта. Содержит следующие поля:

ИмяКомментарий
page страница
hits количество хитов
hosts количество хостов

referers: хранит информацию о ссылках, по которым приходят на сайт. Содержит следующие поля:

ИмяКомментарий
href собственно, ссылка
hits количество посещений с этой ссылки

hitsbydate: хранит информацию о хитах и хостах по дням. Содержит следующие поля:

ИмяКомментарий
date дата
hits количество хитов
hosts количество хостов

Возникает вопрос, откуда взять все эти данные? Вебсервер, при установлении сеанса устанавливает определенные переменные среды, которые доступны из скриптов на языке PHP. Прежде всего нас интересуют следующие:

ПеременнаяЗначение
$REQUEST_URI адрес запрашиваемой страницы
$REMOTE_HOST домен пользователя (если установлен)
$REMOTE_ADDR IP адрес пользователя
$HTTP_REFERER Ссылка, по которой пришел пользователь (если таковая была, т.е. пользователь не набрал адрес сайта в браузере или выбрал из списка избранных сайтов)

Теперь рассмотрим логику работы самой системы.

Проверяем, не является ли значение поля $HTTP_REFERER новым (не содержится в таблице referers). Если новое, то добавляем его в нужную таблицу и устанавливаем количество хитов для него в 1. Если такая ссылка уже была, то, просто, увеличиваем количество хитов.

Аналогичным образом проверяем адрес запрашиваемой страницы.

Далее проверяем, были ли хиты сегодня. Если хитов небыло, значит, начался новый день и это первое посещение сегодня. Следовательно, удаляем все данные из таблицы hits, так как хранить всю информацию в ней нерентабельно. Затем вносим новую дату в таблицу hitsbydate и устанавливаем количество хитов и хостов для данной даты в 1. Если же новый день еще не наступил, то, проверив, не является ли IP адрес уникальным на сегодня, увеличиваем поля hits и hosts в таблице hitsbydate.

И, наконец, заносим информацию в таблицу hits.

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

Результаты работы такой системы вы можете посмотреть на странице статистики моего сервера.

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
Аноним
Мне нравитсяМне не нравится
24 февраля 2006, 16:24:15
Vova, если не знаешь MySQL конечно проще в лоб через файл))
2.
Аноним
Мне нравитсяМне не нравится
27 января 2005, 17:43:27
Большие заморочки с MySQL...
Проще так
<?php
$f2= fopen("ip_stat.dat","a");
setlocale(LC_TIME,"fr_BE");
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);

$ip=getenv(HTTP_X_FORWARDED_FOR);
if (!$ip){
$ip=getenv(REMOTE_ADDR);
};

$tm=strftime("%e %B %Y %H:%M:%S");
$ss=$tm." from $ip ($host)\n";

if ($ip!="62.76.111.11") fputs($f2,$ss);//адрес не учитывается в статистике
if ($host!="file.kursk.ru") fputs($f2,$ss););//хост не учитывается в статистике

fclose($f2);
?>

ну и дать доступ на запись файлу ip_stat.dat!
3.
Аноним
Мне нравитсяМне не нравится
19 августа 2004, 07:55:38
ну это просто, если знать о чем воще тут речь
4.
Аноним
Мне нравитсяМне не нравится
25 мая 2004, 13:16:06

Цитата:

Результаты работы такой системы вы можете посмотреть на странице статистики моего сервера.


АГА! Которого нету!!!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог