|
| gliba 09.06.2007 22:16 Зачастую вебмастер хочет показывать некоторую статистику сайта, например, число посетителей, число фотогалерей и т.д.
Сбор статистики может предъявлять высокие требования по использованию системных ресурсов и/или требовать много времени.
В таком случае целесообразно проводить сбор статистики по таймеру или 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' для записи.
Открываем соединение с базой данных. Посылаем несколько запросов к базе. Результаты пишем в файл
(при его открытии в броузере отобразится табличка с собранными данными). Закрываем соединение. Закрываем файл.
|