Как сделать ПРАВИЛЬНЫЙ www-счетчик посещений

А в чем его "правильность"?
А вот в чем. Любой, существующий на данный момент счетчик тупо считает обращения к URL, и соответственно реагирует на refresh. Что не есть правильно. Один юзверь может запросто нащелкать хоть 100 посещений. Предлагаемый вниманию хинт позволяет этого избежать и считать более правильно!

Что нужно для установки такого счетчика?
Нужен apache web-server, умение программировать на С или Perl. Начнем с apache.
При конфигурации (во время сборки) apache нужно активизировать модуль usertrack (для отслеживания конкретных юзеров). Собранный httpd надо проверить:
# httpd -L | grep usertrack
CookieExpires (mod_usertrack.c)
CookieTracking (mod_usertrack.c)
CookieName (mod_usertrack.c)

Если так, то все прошло нормально.
Ставим куда положено (в httpd.conf):
CookieTracking On
CookieLog |/usr/local/apache/bin/count_cookies

Справка: каждый броузер себя аутентифицирует с помощью (уникального?) выдаваемого им куки, например (куки - после адреса число такое длинное):
d223.chtts.ru.11452941550579226 "GET /images/branch.gif HTTP/1.1" [02/Nov/1999:11:50:12 -0200]
d223.chtts.ru.11452941550579226 "GET /images/branch-c.gif HTTP/1.1" [02/Nov/1999:11:50:14 -0200]
d223.chtts.ru.11452941550579226 "GET /images/root-e.gif HTTP/1.1" [02/Nov/1999:11:50:15 -0200]
d223.chtts.ru.11452941550579226 "GET /images/branch-e-c.gif HTTP/1.1" [02/Nov/1999:11:50:17 -0200]
d223.chtts.ru.11452941550579226 "GET /images/root.gif HTTP/1.1" [02/Nov/1999:11:50:18 -0200]
195.128.141.41.11454941550628601 "GET / HTTP/1.0" [02/Nov/1999:11:50:28 -0200]
thewall.icnpharma.com.11464941550630283 "GET / HTTP/1.0" [02/Nov/1999:11:50:30 -0200]
195.128.141.41.11454941550628601 "GET /images/bg.gif HTTP/1.0" [02/Nov/1999:11:50:30 -0200]
195.128.141.41.11454941550628601 "GET /images/penguin.gif HTTP/1.0" [02/Nov/1999:11:50:30 -0200]
195.128.141.41.11454941550628601 "GET /images/title.gif HTTP/1.0" [02/Nov/1999:11:50:30 -0200]

Пока броузер загружен он будет до смерти толкать впереди себя этот куки.
И при refresh тоже (тут мы их и поймаем :)

count_cookies - это прога на С (самопал). Она принимает на вход этот лог (на выход ничего не подает. Т.е. пайп там и умирает), и делает хэш примерно такого вида:

32287941568710785 = :/::/kievlug.phtml:
32285941567134679 = :/:
17739941584045662 = :/:
11457941551877290 = :/:
11984941576265299 = :/::/soft.phtml::/links.phtml:
17711941604251634 = :/::/links.phtml:

У count_cookies есть конфиг файл:

root:/:
ConnectToNetware.phtml:/ConnectToNetware.phtml:
SVGATextMode.phtml:/SVGATextMode.phtml:
about.phtml:/about.phtml:
kievlug.phtml:/kievlug.phtml:
links.phtml:/links.phtml:
mylinux.phtml:/mylinux.phtml:
ppp-dialin.phtml:/ppp-dialin.phtml:
soft.phtml:/soft.phtml:

Первое поле - ключ, второе URL (мне просто лень было ключи придумывать).

Из первого хэша видно - посещал ли юзер этот URL или нет. После всех анализов она создает второй хэш (результат!):

about.phtml = 9
SVGATextMode.phtml = 51
links.phtml = 38
ConnectToNetware.phtml = 30
root = 235
soft.phtml = 71
mylinux.phtml = 80
ppp-dialin.phtml = 43
kievlug.phtml = 8

Тут хранятся конкретно счетчики. Попробуйте мой linux.uatel.net порефрешить - не выйдет :) Надо из броузера выйти и загрузить вновь.
Ну а далее дело техники (счетчик у меня на С принимает ?url=root из CGI, рисует картинки). Ночью можно куки увалить, знаменуя следующий день, счетчики запомнить, и делать ежедневный анализ (ну, типа 1234 - всего, +56 - сегодня).

По всем вопросам пишите мне.


Украинская баннерная сеть


Maintained by digital pharao © 1999