Создание системы учета посещений.
Создание системы учета посещений.
У вас может возникнуть вопрос, зачем это нужно? Свои услуги предлагают
более десятка российских и огромное множество иностранных систем статистики.
Так зачем лишний раз напрягаться, писать и отлаживать скрипты, создавать
базы и, вообще, совершать какие-либо телодвижения, когда, потратив 10
минут, мы получим полноценную систему статистики, которая предлагает нам,
просто, безграничное количество данных о пользователях нашего сайта?
Причин две. Во-первых, "внешняя" система статистики создают ощутимую
задержку в загрузке страницы. Во-вторых, одному интересно узнать больше
о графической системе пользователя, другому - о версиях браузера, а третьему
- время проведенное пользователем на его сайте. Но, как оказывается, одна
система дает инормацию о графической системе, вторая - о времени посещений,
третья - вообще, не дает такой инормации, зато наиболее точно считает
количество посетителей. Что делать? Вот и начинаем мы с вами ставить на
страницу один, два, а потом и все пять счетчиков, после чего, время загрузки
полезной информации составит не более 10% от времени загрузки сайта. Это
приведет к тому, что посетитель плюнет и уйдет (интернет-то большой) или
информации о нем не попадет в системы статистики. Вот тут-то мы и приходим
к осознанию того, что система нужна своя.
Какие преимущества это дает? Во-первых, скорость загрузки. Цифры статистики
можно вывести текстом, что не задержит загрузку, а обработка статистики
будет производится на том же сервере, что и страница, что не внесет дополнительных
задержек на установление связи с удаленным сервером. Во-вторых, такая
система, изначально, будет соответствовать нашим запросам. Хотим - будем
учитывать параметры графической системы пользователей, хотим - будем считать,
сколько раз пришел за последние 15 секунд Вася Пупкин. В-третьих, так
как такая система является неотъемлемой частью сайта, то не будет потеряно
ни одного хита!
Здесь я не буду приводит конкретных скриптов, потому, что это будет очень
громоздко, да и не нужно, вы, ведь, пришли разобраться во всем этом? Я
изложу только основные принципы.
Для реализации подобной системы я использовал слудующее программное обеспечение:
Базы данных: mySQL
Скрипт: PHP
Вебсервер: Apache.
Сначала определимся, какие параметры мы хотим учитывать. Для себя я считаю
важным знать, сколько пользователей пришло на сайт, сколько хитов они
принесли, какие страницы посетили и откуда пришли и время каждого хита.
Из этих данных можно вывести довольно много статистической информации.
Так что этот аскетичный набор меня вполне устраивает. Исходя из этого,
я создал три таблицы в базе данных:
hits: Хранит подробную информацию о хитах за текущий день. Содержит
следующие поля:
Имя |
Комментарий |
host |
буквенное имя домена пользователя |
addr |
IP адрес пользователя |
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.
Вот и все. Вся необходимая информация хранится в базах на сервере и доступна
в любой момент для проведения дальнейшего статистического анализа.
Результаты работы такой системы вы можете посмотреть на странице
статистики моего сервера.
©
Андрей Головин //exper.ural.ru/
|