Пишем статистику для сателлитов

октября 13, 2008, seoplayer

Предисловие

Сегодня я задумался над мыслью, как же поживают мои китайские сайты. Да, было время, когда важно было наклепать большое количество  сателлитов. Благо это дело окупалось за 2 месяца. Но что же делать с сайтами, которые разрабатываются сегодня? Меня, как разработчика “по специальности” не устраивает вариант использования ресурсов, которые не устраивают мои необходимости. Liveinternet, inetlog и другие стоят в сторонке, т.к. я ленивый и не собираюсь на каждый сайт делать свой счетчик. Основные требования ясны – один код на все сайты и где можно посмотреть общую статистику.

Начнем

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

  1. host – сайт, на который зашёл посетитель.
  2. page – страница на сайте, куда зашёл посетитель.
  3. ip – IP адрес посетителя.
  4. UA – user-agent посетителя.
  5. counter – считать ли пользователя за уникального.
  6. date – ежу понятно.
  7. hms – hour, minute, second.
  8. refsearch – с какой ПС пришли.
  9. refpage – с какой страницы пришли на сайт(ы).

Начнём разбор полётов. Хост и страница разделены для будущего разделения статистики по хостам. в будущем будет удобно сортировать. ip и ua понятны. Кстати говоря, если в user-agent содержится Rambler, , yandex и какие вам ещё нужны – значит это бот. логично. Далее мы разделяем День и Время, когда пришёл пользователь. Опять же для удобства сортировки и сборка статистики по часам, дням, месяцам, годам.
Если установлена HTTP_REFERER, то смотрим не с ПС ли посетитель, если да – пишем с какого ПС и конечно же запоминаем страницу.
Знаете в чём ещё минус счётчиков статистики? Они ставят js код. Мне принципиально не хочется палить адрес СВОЕГО сервера статистики, поэтому вызов скрипта статистики будет через include функцию . Благо с 4.3.0 include позволяет подключить удалённые файлы.
Далее Вам остается лишь передавать необходимые параметры через GET при подключении файла. Да, include получается довольно внушительного размера. Избежать этого можно ооочень просто. Вот тут уже важно понять, чего Вы хотите. Скорости или качества работы статистики.
Я _пока_ за скорость. Посмотрим как сервер отреагирует на активность сайтов и сателлитов. Итак, 2 варианта. Мы можем вызывать непосредственно через include, либо складывать логи в какой-то свой файл и затем по крону пробегать по всем сайтам и парсить все файлы. Дело за Вами :). В 2кб кода у меня вместился сбор статистики с сайтов.
Следующий этап – административная панель. Честно говоря, тут ещё больше встает вопрос вкусов. Что хотите, то и выдерайте из базы. Я же укажу на подводные камни.
Первый камень – это учет количества посетителей и количество показов – разделять их можно по количеству IP за день на хосте, НО что если человек переподключился и зашел с другим IP? Именно для этого существует поле counter. Предлагаю делать её бинарной. При Загрузке страницы ставим cookie на стороне клиента ровно на сутки. Именно по этим кукисам мы будем определять уникальность пользователя.
Второй камень – Что делать, если сервер недоступен? Проверять доступность сервера с помощью сокетов, допустим. Если недоступен, то складывать логи в файлы. Это уж если хотите вести полнейший учет пользователей. Мне достаточно смотреть на динамику посещаемости по дням :).
Третий камень – да, нужен php на сервере. Где его теперь нету…Вряд ли это будет критичный момент. Но если нету, то лучше обратиться к популярным сервисам статистики.
Как можно развить статистику и что добавить? Вот тут советую прежде всего добавить ключевые слова, по которым к Вам пришли, во-вторых прикрутить график изменения посещаемости, в-третьих можно было бы сделать долевую статистику по посещамости с ПС, закладок, других сайтов по дням(довольно хороший параметр для тру сеошников :-D), ну и последнее – чтоб Ваша база не распухала, советую складировать старые логи в файлы. Ах да, прикрутите отсылку email с ежедневными отчетами – вообще шиколадно будет :).
Почему мы не рассматриваем вариант установки графического счетчика? Да потому что будете палить своё сервер статистики, ну и, соответственно можно будет раскрыть всю Ваше сетку. Что с этим делать уже не мой вопрос.
Ну и самое интересное, как защититься от ботов(не ПС, а автоматов)? Советую сделать проверку по исполнению document.write – далеко не все боты умеют его выполнять.

Эпилог

Для кого эта статья, если тут одна голая теория? Да всё просто. На самом деле для меня. :-D Шучу. Я через это прошёл года два назад. Это скорее порядок мыслей, который должен быть в голове начинающих разработчиков web сервисов. Также это мануал для одногруппников, который надеюсь толкнуть на паре :-D (По-04 превед!) . Ведь в этом симестре им сдавать технологии, а в следующием – ДИПЛОМ!
Все Ваши действия должны быть алгоритмизированы. Не бойтесь вернутся к началу. Допустим, пока я писал статью понял, что не учёл 1 поле, которое учёл, пока писал статью. В общем подписывайтесь на этот блог и будут у Вас виллы на море ;).
PS Разработкадля некоммерческих целей. Для полноценного сервиса необходимо пересмотреть все корни проекта.
PPS есть вопросы(преимущественно по теме)? Будешь молчать дальше, никто тебе не поможет. Пиши в комментах, отвечу.

Метки:, ,

Почитать ещё

Специальная оценка условий Труда стоимость

Специальная, низкие цены! Невостребованные остатки

pik-tpb.ru

  1. 8 комментариев в “Пишем статистику для сателлитов”

  2. Окт 14, 2008, mixa пишет:

    без кода не интересно читать =) думал немного натятить для своей статистики. процентов 20% сделала дальше лень

  3. Окт 14, 2008, BlogBot пишет:

    А допустим собирать пути пользователя по сайту или например браузер его? Это излишне? А зачем выносить пункт 6 и 7 в разные пункты? Все равно всю статистику будите складывать в бд и воспользоваться timestamp имхо лучше чем вести 2 отдельных поля.

  4. Окт 14, 2008, Seoplayer пишет:

    mixa, без кода как раз надо думать :)

    BlogBot, браузер будет хранится в пункте 4 – user-agent, 6 и 7 вынес только ради удобства сортировки по дням, на него будет делаться основной упор(постоянный просмотр, отчеты на почту, в последующем складывае в архивные файлы по датам, etc). Да, timestamp лучше, но так, для меня база прозрачней.
    зы чуть ссылку не потер, оказывается блогосферный проект, загляну сегодня ;)

  5. Окт 14, 2008, Одесский манимейкер пишет:

    Счетчик LI.ru одинаковый для всех сайтов. Остается проблема отображения статистики всех сайтов в одном месте. Мой совет http://delpher.od.ua/archives/131

  6. Окт 17, 2008, Алина пишет:

    В этом надо разобраться…

  7. Окт 19, 2008, Аполлон пишет:

    спасибо за ваш труд!

  8. Окт 31, 2008, toXx пишет:

    Вопрос по поводу реализации. Как узнать по какому ключевому слову пользователь пришел на сайт ?
    Узнать по какому запросу пользователь пришел на сайт, вынуть ключевые слова из страницы и проанализировать запрос пользователя на соответствие ключевых слов страницы ? Может есть другое решение ?

  9. Окт 31, 2008, toXx пишет:

    вопрос снят )

Комментировать Пишем статистику для сателлитов