В данной статье будут рассмотрены варианты создания счетчиков для сайтов построенных на базе IIS 3, 4, 5, PWS, GoAhead. Для некоторых счетчиков - любой сервер поддерживающий работу со скрипт - машинами Windows с помощью различных расширений и модулей.(Chili-ASP, ActivePerl). При написании статьи использованы материалы с сайтов:
Примечание: данный материал рассчитан на начинающих скриптеров, по сему код максимально упрощен с целью облегчения восприятия. Код размещен по принципу "от простого - к сложному"
По признаку своей функциональности счетчики можно подразделить на счетчики:
- с накоплением;
- в рамках сессии;
- ементами персонификации;
- с возможностью дальнейшего анализа информации о клиенте;
По способу хранения информации:
- хранение в переменных сессии (приложения);
- хранение в файле на стороне сервера;
- хранение в файле на стороне клиента;
- хранение в базе данных;
- комбинированные;
По способу визуализации:
- текстовые;
- графические;
- информеры ( как комбинация первых двух );
Возможности: счетчик с накоплением, поддержка "виртуальных" сайтов, отдельных asp-страниц.
Для создания данного счетчика необходимо с сайта Microsoft скачать серверный компонент PageCounter и установить его. Весь код счетчика оформлен в виде ISAPI-dll (распространяется вместе с исходными текстами) и число обращений к конкретной странице или инициалиазация/сброс счетчика вызываются как метод серверного объекта PageCounter.
Для установки счетчика на сервер необходимо скопировать PageCnt.dll в каталог \InetPub\ASPSamp\Components\PageCnt\DLL\i386 и зарегистрировать его: regsvr32 PageCnt.dll В случае, если Вы планируете подсчитывать обращения к нескольким виртуальным сайтам, Вам необходимо конфигурировать их как приложения.
Счетчик поддерживает 2 метода HITS и RESET
Код инициализации счетчика для конкретного сайта:
Распологать его лучше всего в верхней части страницы, в первых строках.
<%
Set MyPageCounter = Server.CreateObject("IISSample.PageCounter")
HitMe = MyPageCounter.Hits
%>
Отображение количества заходов:
Данный фрагмент размещайте сообразуясь с дизайном своего сайта.
<% =HitMe %>
Для подсчета на конкретной странице сайта код несколько изменится:
<%
Set MyPageCount = Server.CreateObject("IISSample.PageCounter")
MyPageCount.PageHit
HitMe = MyPageCount.Hits
%> <% =HitMe %>
или
Для того, чтобы запустить счетчик с какого-либо начального значения (12345) используйте следующий код:
<%
=HitMe + 12345
%>
Сброс счетчика (RESET).
<%
Set MyPageCounter = Server.CreateObject("IISSample.PageCounter")
MyPageCounter.Reset
MyPageCounter.Reset("/VirtualDir1/Mypage.asp")
%>
Возможности: счетчик с накоплением. Хранит информацию о количестве обращений в текстовом файле.
Используется объект VBScript (WSH) FileSystemObject.
Порядок действий.
- Создайте текстовый файл c:\mycount.txt
- Для инициализации счетчика укажите в текстовом файле начальное значение. На пример 0.
- В тело вашей страницы впишите следующий код:
<%
'Декларирование переменных
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, f, myCounter
'Создаем объект
Set fso = CreateObject("Scripting.FileSystemObject")
'открываем файл на чтение, и считываем из него ВСЕ содержимое
'если файл отсутствует, то создаем его (Trye).
Set f = fso.OpenTextFile("c:\mycount.txt", ForReading, True)
'отключаем обработку ошибок
On error resume next
'считываем содержимое, в случае пустого (Empty)значения
'присваиваем значение 0 переменной myCounter
myCounter = f.readAll
If myCounter = Empty Then
myCounter = 0
'если все в порядке, то увеличиваем значение переменной myCounter на 1
Else
myCounter = myCounter + 1
End If
'открываем файл на запись и обновляем значение счетчика
Set f = fso.OpenTextFile("c:\mycount.txt", ForWriting, True)
f.Write myCounter
'закрываем файл
f.Close
'очищаем память
Set f = nothing
Set fso = nothing
%>
- В соответствии с дизайном разместите счетчик.
<%
= myCounter
%>
Счетчик с накоплением. Хранит данные в переменных сесии ( приложения ), отображает количество пользователей, находящихся в данный момент на сайте.
В рут - каталоге сайта создайте файл global.asa
Код:
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Session_OnStart
Session.Timeout = 5
Application.lock
Application("myCounter") = Application("myCounter") + 1
Application("visitors") = Application("visitors") + 1
Application.unlock
END SUB
</script>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Session_OnEnd
Application.lock
Application("visitors") = Application("visitors") - 1
Application.unlock
END SUB
</script>
В теле asp-страницы разместите код:
<%
Dim vist, currentcount
visit = Application("visitors")
currentcount = Application("myCounter")
%>
В соответствии с дизайном поместите счетчик общего числа обращений/текущего количества пользователей
<%
= currentcount & "/" & visit
%>
В следующих статьях будут рассмотрены способы создания более сложных счетчиков с использованием баз данных и информеров.
Вперёд