Створення системи обліку відвідувань, PHP, Програмування, статті

NAS

У вас може виникнути запитання, навіщо це потрібно? Свої послуги пропонують більше десятка російських і величезна безліч іноземних систем статистики. Так навіщо зайвий раз напружуватися, писати і налагоджувати скрипти, створювати бази і, взагалі, вчиняти будь рухи тіла, коли, витративши 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.

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

Результати роботи такої системи ви можете подивитися на сторінці статистики мого сервера.
© Андрій Головін http://exper.ural.ru/

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*