Секреты программирования - запись статистики сайта в файл (ASP).
Уважаемые подписчики!
Сегодняшняя тема - запись статистики сайта в файл. Зачастую вебмастер хочет показывать некоторую статистику сайта, например, число посетителей, число фотогалерей и т.д. Сбор статистики может предъявлять высокие требования по использованию системных ресурсов и/или требовать много времени. В таком случае целесообразно проводить сбор статистики по таймеру или cron'у, писать результаты в файл. На страницах пользователей просто его отображать. Код в ASP иллюстрирует этот подход.
Код
<%@ Language=VBScript %>
<%
dim cn, cmd, rs, sql, sRealDir, fso, ts, day, month, sName, sNew
sRealDir = Server.MapPath( "/stat" )
Set fso = Server.CreateObject("Scripting.FileSystemObject")
sName = sRealDir & "\stat.inc"
if fso.FileExists( sName ) then
'rename existing
day = DatePart( "d", dt1 )
if len( day ) < 2 then day = "0" & day
month = DatePart( "m", dt1 )
if len( month ) < 2 then month = "0" & month
sNew = "\stat" & DatePart( "yyyy", dt1 ) & month & day & ".inc"
call fso.MoveFile( sName, sRealDir & sNew )
end if
Set ts = fso.OpenTextFile( sName, 2, True) 'ForWriting
call openConnection()
ts.Write "<table align='center' cellspacing='0' cellpading='3'><tr>" & Chr(10)
sql = "SELECT count(*) AS cnt FROM tblUser WHERE status > 0"
cmd.CommandText = sql
rs.Open cmd
if not rs.EOF then
ts.Write "<td><b>студенты</b>: " & rs("cnt") & "</td>" & Chr(10)
end if
rs.Close
sql = "SELECT count(*) AS cnt FROM tblProductSlide"
cmd.CommandText = sql
rs.Open cmd
if not rs.EOF then
ts.Write "<td><b>фотослайды</b>: " & rs("cnt") & "</td>" & Chr(10)
end if
rs.Close
ts.Write "</tr></table>" & Chr(10)
call closeConnection()
ts.Close
Set fso = nothing
sub openConnection()
set cn = Server.CreateObject("ADODB.Connection")
cn.ConnectionTimeout = 60
cn.ConnectionString = sConnectionString
cn.Open
set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = cn
cmd.CommandType = adCmdText
set rs = Server.CreateObject("ADODB.Recordset")
end sub
sub closeConnection()
cn.Close
set cmd = nothing
set rs = nothing
set cn = nothing
end sub
%>
Комментарии
Создаем объект для работы с файловой системой. Проверяем наличие файла 'stat.inc' в директории /stat. Есть файл существует, переименовываем его. Открываем новый файл 'stat.inc' для записи. Открываем соединение с базой данных. Посылаем несколько запросов к базе. Результаты пишем в файл (при его открытии в броузере отобразится табличка с собранными данными). Закрываем соединение. Закрываем файл.
Для улучшения "обратной связи" приглашаю обсудить рассылку на форуме сайта
http://www.pvobr.ru в разделе "Программирование". Пишите также, какие темы вы хотите рассмотреть в будущем.
Успехов! Андрей
ЗЫ Hовичок спросил у Мастера: - Я видел программиста, который никогда не оформляет, не тестирует и не документирует программы. Hо все кто знает его считают его одним из лучших программистов в мире. Почему так? Мастер ответил: - Этот программист овладел Дао. Он больше
не нуждается в оформлении; он не злится, когда система зависает, но принимает мироздание без раздражения. Он давно не нуждается в документации; он больше не беспокоится о том, что кто-то еще увидит его код. Он больше не нуждается в тестировании; каждая из его программ совершенна сама по себе, ясна и элегантна, ее назначение очевидно. Истинно вошел он в таинство Дао!! [C] James Geoffrey