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

Секреты программирования

  Все выпуски  

Секреты программирования - запись статистики сайта в файл (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

В избранное