Отправляет email-рассылки с помощью сервиса Sendsay

Построй свой сайт на PHP!

  Все выпуски  

Построй свой сайт на PHP!


Информационный Канал Subscribe.Ru

Построй свой сайт на PHP!

искать в

Здравствйте, уважаемые читатели!

Надо сказать, время - это такая подлая вещь, что прямо и выразить нельзя. Время - как песок. Набрал вроде пригоршню, не успел опониться, а с пальцев скатываются поледние песчинки. Именно из-за такого непонятного свойства этой субстанции, я вам должен предложить на пару килобайт меньше обычного. Перед вами первая часть обещанной в прошлом выпуске статьи. Часть эта теоретическая, так что те, кто засыпает от такого дела могут просто пропустить этот выпуск: в следующем мы повеселимся по полной программе, анализируя пути пользователей по сайту, среднее кличесвто просмотренных страниц, точки входа и точки выхода, статистику по браузерам, по операцинным системам, по посетителям, по хостам, хитам и по многому еще. Ну а теперь вы можете либо отложить выпуск на вечер, чтобы под него спокойно уснуть, либо прочитать это все и обогатиться ценными и не очень сведениями.

Впрочем, прежде я прошу вас еще немного сконцентрировать внимание на этих черных буквах. Прежде всего, я хочу рассказать о прекрасных онлайн курсах по PHP, открывшихся не так давно на intuit.ru. Вот ссылка. О них я хотел рассказать еще прошлый раз, но, как обычно, запамятовал. Отличный способ выучить язык, хороший метод повышения квалификации или просто небольшой справочник. Курс можно проходить бесплатно, а можно и за деньги. В последнем случае, естественно, возможностей несколько побольше. Там же можно пройти и тестирование после каждой главы. Впрочем, вы можете попробовать и просто сдать тест, но это не так просто - многие вопросы весьма заковыристые. Лично я открыл для себя некоторые новые вещи, несмотря на то, что уже не первый год активно использую PHP.

Второе. Ни для кого не секрет, думаю, что на subscribe.ru помимо нашей рассылки существует и несколько других, посвященых PHP. Так, я хочу вам представить рассылку PHPWars. Довольно необычная цель, девиз, много энтузиазма - рассылка открылась не так давно и пока не переведена в статус "серебрянных", так что подписчиков немного. Посмотрите, возможно, это именно то, что вы искали.

И в-последних, я действительно заметил, что phpdevelop.info откровенно пустой. Хотелось бы узнать, что бы вы хотели видеть на этом сайте. Если не трудно, черкните пару строчек. Сегодня, кстати, с полчаса пытался заставить работать сайт с PHP-статьями, потому что так жить нельзя. Получилось только после полного отключения местами пост-обработки контента. HTML он не признает как класс и стремится добавить еще лишних переводов строки и даже иногда загадочным образом выполняет php-код из некоторых листингов. Менять движок я не хочу: в процессе собственный (кстати, по-прежнему ищу в команду еще одного человека). Впрочем, там отдельная история - проект прежде всего расчитан на коммерческое использование, так что подразумевается как минимум уровень известной у нас Битрикс: Управление сайтом. Вот такое несоответствие. Впрочем, я решил-таки добить phpdevelop и заставить его нормально работать со статьями, ждать тут негоже, благо руки есть, голова вроде тоже.

У меня тут еще было что-то, но черт с ним. Иначе вступление получится больше моего куска статьи. Так что удачи, и обязательно пишите: я все очень внимательно читаю и, кроме того, мне очень приятно получать ваши письма.

The Wanderer. phpdevelop.info. ICQ: 233661333 admin@never-invited.com

Перепись населения сайта

или собираем статистику с использованием PHP

Статистика – это очень важно. Особенно в умелых руках. Впрочем, даже и в обычных руках, которые растут, может быть, иногда и не из правильного места, статистика тоже может сыграть важную роль. Ведь каждому хочется узнать, на что лучше отреагировала общественность – на фотки кошки Дуськи или на сочинение “Как и с кем я провел лето”. Без статистики посещаемости разработчик сайта похож на незрячего человека – ему остается лишь угадывать, что творится вокруг его сайта.

Естественно, практически каждый может просто воспользоваться услугами бесплатных “счетчиков”. Такие сервисы предлагают вам просто зарегистрироваться, вставить немного кода в вашу страницу и – о чудо – с каждым вашим заходом на сайт меняются какие-то таинственные циферки на картинке с логотипом Mail.ru, SpyLog или еще кого-нибудь, и вам становится сразу ясно, что кошка Дуська таки понравилась вашим посетителям и на нее ходят смотреть чаще, чем читать главы из ваших мемуаров. Проблема, однако, в том, что практически все более или менее крупные системы сбора статистики не работают абсолютно бесплатно и их “бесплатные” услуги – всего-навсего реклама более развитых платных пакетов. Я здесь, чтобы сказать, что у вас в руках инструмент, который позволяет собрать ту же самую статистику, которую вам предлагают за “всего $99.99 в год” абсолютно бесплатно и делать с ней, все что вам угодно.

В действительности, между данными, собранными при использовании пакета за “$99.99 в год”, собранными бесплатным пакетом и даже любой распространенной системой управления содержимым, нет, как правило, ни какой существенной разницы. Эти данные:

  • IP-адрес посетителя.

  • Страница, с которой пришел посетитель.

  • Страница, на которую пришел посетитель.

  • Разрешение экрана посетителя.

  • Адрес прокси

  • Глубина цвета

  • Информация о браузере

Трудность заключается лишь в анализе этой информации. Именно этим отличаются платные пакеты от бесплатных: они строят красивые графики, хранят ваши данные за более долгий период и, возможно, имеют какое-то ноу-хау в определении более точного числа уникальных посетителей. Имея же голову на плечах, вы можете сделать своими руками на сайте то же самое, делать собственный графический, текстовый или вовсе не делать никакого счетчика, отправлять себе любую статистику в любое время на e-mail или даже, при определенных навыках, на мобильный телефон (расковыряв предварительно страницу своего сервис-провайдера ;-)), а может быть даже и обычной почтой каждый месяц (насколько я знаю, в рунете существует сервис, позволяющий бесплатно отправлять из интернета бумажные письма, так что нет ничего невозможного). В любом случае, вы можете делать все, что вам хочется, без всяких ограничений.

А где возьмешь?..

Практически все из вышеперечисленного заботливо собирает и сохраняет для нас веб-сервер (кроме разрешения и глубины цвета экрана посетителя: эти данные собираются небольшим куском кода на JavaScript и затем посылаются на сервер). Однако он не так, чтобы особенно стремится всем их раздарить. Тем не менее, он их и не скрывает: достаточно заглянуть в логи веб-сервера или в супер глобальную переменную $_SERVER в PHP.

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

Сначала давайте поговорим о программах, берущих данные из логов сервера. Я не зря сказал “программы” - в большинстве своем это действительно не скрипты, а бинарные программы, запускающиеся на сервере. Дело в том, что разбор логов сервера – дела достаточно небыстрое и уж, конечно, делать это лучше один раз в некоторый промежуток времени, а затем сохранять результат, чем каждый раз при запросе страницы статистики. Естественно, то же самое можно сделать и при помощи любого скрипта, на том же PHP, но нет причины делать это: подобные программы используются в основном самими хостерами и пользователь может попросту не знать ни про какой PHP. Недостаток такого рода решений состоит в том, что каждый веб-сервер пишет свой “бортовой журнал” в различном формате. Можно, конечно, ограничиться популярным Apache или IIS или что там у вас запущено, но ведь необходимые данные нужно для начала догадаться как извлечь, после чего вы, скорее всего, получите целый ворох данных, которые нужно будет еще и нужным образом обработать. Это довольно неудобно, учитывая, что в связке PHP + БД все намного проще: данные можно обработать еще при их выборке.

Недостатки же второго подхода не так существенны и не являются, по сути такими уж недостатками. Во-первых, вам необходимо будет править код вашего сайта или, как минимум, шаблоны. Это иногда может принести существенные проблемы, особенно если движок не ваш и/или он плохо спроектирован. Во-вторых, к каждой вашей странице добавляется пара-тройка лишних запросов к БД (или операций с файловой системой, если вы вдруг решите хранить данные в текстовых файлах), что не добавит производительности. Ну и в-третьих, вам придется заботиться об удалении устаревших данных – иначе ваша база станет угрожающе надуваться и хостер не скажет вам за это спасибо. И уж тем более нигде вас не погладит.

И что я за это получу?

Как я уже не раз намекал, мы будем хранить данные в базе. Почему? Да потому что это очень удобно и достаточно быстро. Впрочем, если вы захотите хранить всю информацию в текстовых файлах, то никто не запрещает вам это сделать, но я предупреждаю, что это в некоторой степени занятие для извращенцев. :-)

База. Но прежде чем мы приступим к делу, еще немного болтовни. Несмотря на то, что из тех данных, о которых я писал выше (потрудитесь прокрутить страницу чуть вверх – там даже такие черненькие точечки стоят), можно получить и все остальное, хорошей идеей было бы сначала получить эти дополнительные данные, сохранить их в базе вместе со всем остальным, а не получать каждый раз при генерации статистики – это серьезно скажется на производительности.

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

Давайте немного более подробно остановимся на втором пункте, а именно получении по ip-адресу страну и город. Получить эти данные можно тремя способами. Первый – вызов функции gethostbyaddr(string ip_adress). Она получает адрес интернет-хоста посетителя. Если вы не сидите за прокси, этот адрес скорее всего будет выглядеть вроде xxxx.ваш-провайдер.ru (или .by, или .ua, или еще что-нибудь). Заметили? Страна легко определяется по имени зоны. Естественно, точность здесь весьма условная. Кроме того, провайдер может иметь сайт и в зоне su или com или еще где-то. В результате чего в на некоторых сайтах вы можете увидеть статистику, говорящую что недавно заходил кто-то из СССР или из “коммерческих пользователей”. Город таким образом определить, как понимаете, нельзя, но люди – существа удивительные и был придуман способ из адреса провайдера получить и его. Делается это следующим образом. Все вы, надеюсь, знаете о существовании WHOIS. Это такая служба, где вы вбиваете в строку ввода ip-адрес или адрес хоста и получаете информацию о владельце и гору всякого другого хлама. Среди которых, вполне вероятно, будет и город. Программист просто выбирает какую-либо службу, посматривает, как строится запрос и подделывает его. Полученные данные же разбираются, и оттуда вычленяется название города. Точность, как вы понимаете, здесь не выше, чем в определении страны из способа выше. И наконец третий способ: база данных со всей необходимой информацией. Как вы понимаете, такие базы в основном хранятся внутри крупных фирм и никому не раздаются. Такую базу можно составить самому. Ее можно купить. А можно и получить бесплатно. Самая, наверное, распространенная база – это GeoIP. У нее есть как платная, так и бесплатная версия. Платная и бесплатная базы отличаются только точностью определения положения посетителя. Так, в бесплатной версии все пользователи AOL считаются американцами. В платной же они уже разделяются на жителей Англии, Америки, Австралии и где там еще есть AOL. Именно ее мы и будем использовать. Заходим на http://maxmind.com/ и качаем сначала обертку для работы с базой на PHP, а затем сначала базу стран, а потом базу городов:

http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz

http://www.weblogexpert.com/files/WLECityDB.zip

 
Copyright © 2004-2005 Построй свой сайт на PHP!
Перепечатка возможна только с сохранением авторства.
Выпуск #7: 2005-04-18

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.phpdev
Отписаться

В избранное