Счетчики (набросок ТЗ)

Здесь

Заказчик
Компания, заказавшая данную разработку.
Клиент
Компания, обратившаяся к Заказчику с просьбой разрешить разместить на страницах своего сайта (сайтов) счетчика.


В целом эта схема очень похожа на нашедшую широкое применение разработку Rambler.

При этом не делается никаких предположений относительно использования Клиентом методов ASP или SSI. Не накладывается никаких ограничений на применяемую операционную систему, Web-сервер. Что касается Заказчика, то, как было сказано, он использует Linux, Apache и MySQL. Следует учесть, что в дальнейшем, по мере появления в том необходимости, будет осуществлен переход Заказчика на комбинацию Solaris, Apache и Oracle, будут выделены несколько серверов, по которым будет разделен поток запросов (иными словами, изначально должна быть обеспечена масштабируемость и переносимость на другие платформы).

Общая организация системы счетчиков

В каталоге path1 для каждого обслуживаемого сайта должен храниться файл счетчиков, где хранятся значения счетчиков для всех страниц сайта, а также дополнительная информация. Например, файл 0014.cnt для сайта с номером 0014.

В каталоге path2 для каждого обслуживаемого сайта хранится персональная база данных (в данном случае MySQL), куда заносятся все обращения. Например, для сайта с номером 0014 это файл 0014.bd.

Программа должна допускать использование различных вариантов оформления счетчика. Варианты (шаблоны) оформления счетчика должны храниться в каталоге path3. Номер шаблона, выбранного Заказчиком для данного сайта, должен быть записан в файле счетчиков.

Формат файла счетчиков:

Файл счетчиков представляет собой текстовый файл, состоящий из записей и комментариев. Строки коментариев начинаются с #. Записи начинаются с номера счетчика, за которым через пробел (несколько пробелов) следует значение счетчика. Счетчики сайта нумеруются как 0000, 0001, 0002 и т.д.

Счетчик 0001 обычно располагается на первой странице сайта.) Если от посетителя пришел запрос на обслуживание счетчика на этом сайте, ранее не заявленного Клиентом, то скрипт такой запрос игнорирует, возвращая иконку ошибки и ссылку на страницу с соответствующим комментарием на сервере Заказчика.

Счетчик 0000 контролирует общее количество идентифицируемых посетителей на всех подконтрольных страницах сайта. От посетителя сайта не может поступить запроса на получение изображения счетчика с номером 0000.

Строки комментария могут хранить сведения о Клиенте, а также дополнительную служебную информацию. Например, в строке

#counter_design 8

сообщается, что все счетчики данного сайта должны быть оформлены в соответствии с шаблоном номер 8.

Порядок обработки запроса

Клиенту предлагается поместить на своей html-странице некий фрагмент кода, в котором указываются адрес сервера Заказчика, имя скрипта, обслуживающего счетчики, номер счетчика. Например

<img src=”http://someserver.ru/cgi-bin/counter.pl?id= 00140001”>

Здесь первые четыре цифры аргумента id однозначно идентифицируют сайт Клиента, а последние четыре – страницу, где расположен счетчик. Клиент может иметь на своем сайте несколько счетчиков. В приведенном примере счетчик располагается на (главной) странице 0001 сайта 0014. Клиент может при желании разместить дополнительные счетчики на страницах основных разделов сайта (00140002, 00140003 и т.д.), обеспечив таким образом более полный сбор статистики о посетителях, и наиболее типичных маршрутах их передвижения. На разных страницах сайта можно разместить несколько счетчиков с одним и тем же идентификатором id, что позволяет вести единый учет посетителей.

Размещая своей странице указанный фрагмент кода на, Клиент заставляет браузер посетителя саму страницу брать с сервера Клиента, а образ счетчика – с сервера Заказчика. Получив очередной запрос на передачу счетчика, программа (CGI-скрипт) должна

Раз в неделю следует удалять из баз даных все записи месячной давности.

Процедура определения IP-адреса посетителя. Обычно IP-адрес определяется по значению параметра REMOTE_ADDR. Однако, если посетитель пользуется proxy-сервером, то воможны ситуации, когда в этом параметре будет записан адрес прокси-сервера. Поэтому прежде чем принимать в качестве адреса значение этого параметра, следует проверить, присутствует ли параметр HTTP_FORWARDED, или нечто со словом “FORWARD”, имеющее значение, которое могло бы быть IP-адресом. В таком случае в качестве искомого адреса следует брать значение этого параметра.

Предусмотреть вариант невидимого счетчика, когда на браузер посетителя передается не динамически сформированный образ, а просто небольшой полностью прозрачный рисунок GIF. “Невидимые” счетчики обслуживает скрипт /cgi-bin/counter1.pl, полностью эквивалентный в функциональном плане скрипту counter.pl.

С помощью механизма семафоров следует предусмотреть защиту от конфликтов между несколькими одновременно сделанными запросами во время обращения к базе данных или счетчику.

Разработка интерфейса, с помощью которого Клиент может получить отчет со статистическими данными о работе счетчиков на своем сайте, в рамки данного технического задания не входит.

Дополнительные требования

Все программы должны быть написаны на языке Perl.

Каждый этап в процессе обработки запроса должен быть оформлен в виде отдельной процедуры. Перед каждой процедурой должен помещаться комментарий, в котором дается описание процедуры, ее входных и выходных данных.

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

К программе должно прилагаться руководство по установке и настройке программы, а также примеры файлов конфигурации и страниц HTML.

Приложение

Примеры скриптов, обслуживающих счетчики:

Пример управления счетчиком:


 back