孫鐵軍
摘要:網(wǎng)站的運(yùn)營(yíng)管理者需要了解網(wǎng)站的流量信息,以便制定以后的網(wǎng)站發(fā)展策略。該文以作者開(kāi)發(fā)的且正在使用的網(wǎng)站訪問(wèn)統(tǒng)計(jì)系統(tǒng)為例,介紹該網(wǎng)站訪問(wèn)統(tǒng)計(jì)系統(tǒng)的基本設(shè)計(jì)過(guò)程及實(shí)現(xiàn)方法。該系統(tǒng)采用ASP+MSSQL2000技術(shù)實(shí)現(xiàn),能夠自動(dòng)實(shí)時(shí)記錄和統(tǒng)計(jì)網(wǎng)站訪問(wèn)者的訪問(wèn)情況,系統(tǒng)的管理者可以查看網(wǎng)站實(shí)時(shí)的網(wǎng)站訪問(wèn)統(tǒng)計(jì)信息。
關(guān)鍵詞:ASP;MSSQLSERVER;多用戶;網(wǎng)站;訪問(wèn)統(tǒng)計(jì)
中圖分類號(hào):TP312文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)20-4885-04
Access to Statistical Systems Design and Implementation of ASP + MSSQL Based Multi-User Site
SUN Tie-jun
(Anyang Institute of Technology, Anyang 455000,China)
Abstract: The site operations managers need to understand website traffic information, in order to develop the site development strategy. This article developed by the authors and are using the Web site access statistics system, for example, access to the statistical system design process and the realization method of introducing the site. The system uses ASP + MSSQL2000, technology that can automatically re al-time records and statistics website visitors access, the system administrator can view the site real-time site access statistics.
Key words: ASP; the MSSQLSERVER; multi-user; site; Access Statistics
實(shí)時(shí)掌握自己網(wǎng)站的訪問(wèn)統(tǒng)計(jì)信息對(duì)一個(gè)網(wǎng)站的運(yùn)營(yíng)管理者來(lái)說(shuō)重要性是不言而喻的,網(wǎng)站訪問(wèn)統(tǒng)計(jì)系統(tǒng)可以讓運(yùn)營(yíng)管理者即時(shí)了解當(dāng)前網(wǎng)站的訪問(wèn)統(tǒng)計(jì)狀況,如訪問(wèn)量統(tǒng)計(jì)分析、訪問(wèn)者來(lái)路統(tǒng)計(jì)、搜索引擎統(tǒng)計(jì)、搜索關(guān)鍵詞統(tǒng)計(jì)、訪問(wèn)者地區(qū)分布等等。通過(guò)對(duì)網(wǎng)站全面的流量統(tǒng)計(jì)數(shù)據(jù)分析,從而指導(dǎo)網(wǎng)站網(wǎng)站的運(yùn)營(yíng)管理者制定網(wǎng)站下一步的協(xié)規(guī)劃發(fā)展方向。
對(duì)于一套網(wǎng)站訪問(wèn)統(tǒng)計(jì)系統(tǒng)來(lái)說(shuō),所使用的開(kāi)發(fā)語(yǔ)言決定了它的執(zhí)行效率,而統(tǒng)計(jì)系統(tǒng)的核心是對(duì)訪問(wèn)數(shù)據(jù)的存儲(chǔ)與分析,開(kāi)發(fā)語(yǔ)言我選擇了ASP語(yǔ)言,數(shù)據(jù)庫(kù)我選擇了功能強(qiáng)大的MS SQL Server 2000作為數(shù)據(jù)存儲(chǔ)的載體。
ASP是Active Server Page的縮寫(xiě),意為“動(dòng)態(tài)服務(wù)器頁(yè)面”。是現(xiàn)在網(wǎng)絡(luò)上一種應(yīng)用比較廣泛的服務(wù)器端腳本編寫(xiě)環(huán)境,可以用來(lái)創(chuàng)建和運(yùn)行動(dòng)態(tài)網(wǎng)頁(yè)或Web應(yīng)用程序并能方便的連接ACCESS與MSSQL數(shù)據(jù)庫(kù)。
MS SQL Server 2000是Microsoft公司推出的功能強(qiáng)大、完整的關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),它以其內(nèi)置的數(shù)據(jù)復(fù)制功能、強(qiáng)大的管理工具、與Internet的緊密集成和開(kāi)放的系統(tǒng)結(jié)構(gòu)為廣大的用戶、開(kāi)發(fā)人員和系統(tǒng)集成商提供了一個(gè)出眾的數(shù)據(jù)庫(kù)平臺(tái),它提供了數(shù)據(jù)完整性、安全性、事務(wù)處理、網(wǎng)絡(luò)多用戶處理等必備的功能。
<b> 1系統(tǒng)設(shè)計(jì)</b>
1.1系統(tǒng)功能設(shè)計(jì)
根據(jù)網(wǎng)站訪問(wèn)統(tǒng)計(jì)的工作要求,網(wǎng)站訪問(wèn)統(tǒng)計(jì)系統(tǒng)就具有以下功能:
1)能實(shí)現(xiàn)網(wǎng)站訪問(wèn)信息(如訪問(wèn)時(shí)間,訪問(wèn)者IP,訪問(wèn)者所在地區(qū),所訪問(wèn)的頁(yè)面等)的自動(dòng)記錄。
2)用戶是通過(guò)何種途徑來(lái)到網(wǎng)站的,訪問(wèn)了哪些頁(yè)面、并在網(wǎng)站上停留了多長(zhǎng)時(shí)間,以及客戶端信息(如使用的操作系統(tǒng)、瀏覽器類型,屏幕大小,訪問(wèn)本站的次數(shù)等)進(jìn)行分類匯總。
3)能夠根據(jù)統(tǒng)計(jì)數(shù)據(jù),自動(dòng)生成各種統(tǒng)計(jì)報(bào)表。
4)能進(jìn)行訪問(wèn)量的查詢、統(tǒng)計(jì)、分析,并且以表格或圖形方式進(jìn)行輸出。
1.2系統(tǒng)的總體結(jié)構(gòu)
如圖1所示,用戶訪問(wèn)網(wǎng)站,統(tǒng)計(jì)系統(tǒng)自動(dòng)記錄,把基本信息整理后寫(xiě)人數(shù)據(jù)庫(kù)。統(tǒng)計(jì)系統(tǒng)根據(jù)網(wǎng)站報(bào)表查看者的需要展示各種統(tǒng)計(jì)報(bào)表。
1.3數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)是統(tǒng)計(jì)系統(tǒng)的核心和支柱。數(shù)據(jù)庫(kù)結(jié)構(gòu)的合理性及優(yōu)劣將直接影響整個(gè)應(yīng)用系統(tǒng)的開(kāi)發(fā)工作。在綜合了各種統(tǒng)計(jì)的基本要求后,數(shù)據(jù)庫(kù)主要表結(jié)構(gòu)設(shè)計(jì)如下(限于篇幅,只列出第一張表的表結(jié)構(gòu)信息)。1)在線用戶表(Online),該表主要記錄當(dāng)前在線用戶的信息。表結(jié)構(gòu)如下表1:
2)用戶訪問(wèn)明細(xì)表(LastUser),該表以時(shí)間訪問(wèn)先后順序記錄來(lái)訪用戶的一些基本信息,如來(lái)訪時(shí)間、來(lái)訪者IP、IP所屬地區(qū)、所進(jìn)入的頁(yè)面、來(lái)路、來(lái)訪時(shí)間等。表結(jié)構(gòu)如下:
3)訪問(wèn)量表(Visits),該表以小時(shí)為時(shí)間段,記錄每小時(shí)內(nèi)網(wǎng)站的訪問(wèn)量(IP)和瀏覽量(PV)。
4)客戶端信息表(Client),該表記錄客戶端的一些信息,如所使用的操作系統(tǒng)、瀏覽器、屏幕大小、所在地區(qū)等。
5)關(guān)鍵詞表(Kword),該表記錄用戶通過(guò)搜索引擎搜索什么內(nèi)容后訪問(wèn)到被統(tǒng)計(jì)網(wǎng)站的。
6)來(lái)路表(EngineCome),該表記錄用戶通過(guò)什么網(wǎng)站來(lái)到被統(tǒng)計(jì)網(wǎng)站的。
7)被統(tǒng)計(jì)網(wǎng)站頁(yè)面表(Sitepage),該表記錄被統(tǒng)計(jì)網(wǎng)站一天內(nèi)被訪問(wèn)瀏覽了哪些頁(yè)面以及每個(gè)頁(yè)面訪問(wèn)瀏覽的次數(shù)和時(shí)間等信息。
8)防刷新IP列表表(TodayIP),該表只記錄一天內(nèi)訪問(wèn)過(guò)被統(tǒng)計(jì)網(wǎng)站的IP,且在每天0時(shí)以后自動(dòng)清空。以保證一個(gè)IP一天內(nèi)的多次訪問(wèn)只記錄一個(gè)訪問(wèn)量(IP)和多個(gè)瀏覽量(PV)。
<b> 2系統(tǒng)的實(shí)現(xiàn)</b>
2.1嵌入統(tǒng)計(jì)代碼
要想對(duì)被統(tǒng)計(jì)網(wǎng)站進(jìn)行統(tǒng)計(jì),需要在每個(gè)被統(tǒng)計(jì)的頁(yè)面嵌入以下統(tǒng)計(jì)代碼,<script src="/stat/mystat.aspsiteid=1"></script>,這樣,當(dāng)用戶訪問(wèn)被統(tǒng)計(jì)網(wǎng)站的頁(yè)面時(shí)嵌入的代碼就會(huì)被執(zhí)行,從而觸發(fā)向服務(wù)器端提交相關(guān)信息。
mystat.asp文件中向服務(wù)器端提交信息的Javascript代碼片段如下:
……
‘以下代碼將獲取的客戶站相差信息提交到服務(wù)器進(jìn)行處理
+ stat.aspstyle= + stat_style+ &siteid= + stat_siteid
+ &tzone= + stat_tzone
+ &tcolor= + stat_tcolor
+ &sSize= + stat_sSize
+ &referrer= + stat_referrer+ ></script>;
document.write(stat_outstr);
……
‘以下代碼將定時(shí)向服務(wù)器端發(fā)送訪問(wèn)者的在線狀態(tài)信息
function statimgon(reftime){
var ttime=new Date();
var stat_img=new Image();
stat_img.src=stat_url+stat_online.aspsiteid=+stat_siteid+&u=+stat_referrer+&o=+ttime.getDate+ttime.getMinutes +ttime.getSec onds;
var statimgtimeout=setTimeout(statimgon(+reftime+);,reftime);
}
statimgon(<%=CFG_CheckOnlineS*1000%>);
2.2獲取用戶的訪問(wèn)信息
在ASP中主要通過(guò)Request對(duì)象獲取客戶端信息的,Request內(nèi)置對(duì)象中的ServerVariables屬性,用于獲取HTTP表頭中的信息,HTTP頭中包含了一些如訪問(wèn)者IP、UserAgent等信息在客戶端無(wú)法獲取的信息。
2.3處理獲取到的數(shù)據(jù)
對(duì)獲取的數(shù)據(jù)進(jìn)行整理并進(jìn)行分類存儲(chǔ)是網(wǎng)站訪問(wèn)統(tǒng)計(jì)系統(tǒng)的核心功能,數(shù)據(jù)處理的優(yōu)劣及數(shù)據(jù)保存到數(shù)據(jù)庫(kù)所需要的時(shí)間直接影響到整個(gè)統(tǒng)計(jì)系統(tǒng)的性能,所以,在數(shù)據(jù)數(shù)據(jù)處理時(shí)在保證正確處理的同時(shí)盡量做到代碼精簡(jiǎn),在數(shù)據(jù)存儲(chǔ)時(shí)充分利用SQLSERVER批處理事務(wù)的功能,將保存數(shù)據(jù)的代碼做過(guò)存儲(chǔ)過(guò)程里,以盡可能快的速度完成數(shù)據(jù)的保存工作。
以下是數(shù)據(jù)處理及保存的核心代碼片段:
……
服務(wù)器當(dāng)前時(shí)間
truenow= now()
today0hour=datevalue(now())
是否新的一天isNewDay = false
if DateValue(Site_TodayDate) < DateValue(now()) then isNewDay=true 是否新的一天
新的一天
if isnewday then
執(zhí)行新的一天的處理過(guò)程
為流量庫(kù)添加當(dāng)天的所有行
for i= 0 to 23
conn.execute ("insert into [View] (Site_id,V_DTime,V_View,V_IP) Values("&Siteid&","&dateadd("h",i,today0hour)&",0,0)")
next
更新SITE表的最后日期
conn.Execute ("update Site set S_TodayDate = "&today0hour&" where Site_Id=" & SiteID) end if
是否刷新
isRe = 0
set rs = conn.Execute("select Site_Id from todayip where UserIP="&vIP&" and Site_Id=" & SiteID)
if not rs.eof then isRe=1 如果IP已經(jīng)存在于保存的列表中,是刷新
rs.close
set rs=nothing
if isre=0 then conn.Execute("insert into todayip (Site_ID,UserIP) values ("&SiteID&","&vIP&")") 寫(xiě)入當(dāng)前IP到刷新判定IP表
……
if isre=0 then
conn.Execute("SaveContent"&vos&","&vColor&","&vUser&","&vArea&","&vIP&","&vAgent&","&vPage&","&vKeyw&","&vCome&"," &SiteID&","&truenow&","&nowHour&"")
else
conn.Execute("SavePage "&vIP&","&vpage&"," &SiteID&","&truenow&","&nowHour&"")頁(yè)面瀏覽量
end If
conn.Execute("SaveTrack "&vIP&","&vpage&"," &SiteID&","&truenow&","&Site_SaveDays&"")瀏覽軌跡
……
2.4報(bào)表數(shù)據(jù)顯示輸出
統(tǒng)計(jì)報(bào)表顯示輸出是網(wǎng)站訪問(wèn)統(tǒng)計(jì)系統(tǒng)最基本的功能,沒(méi)有輸出的網(wǎng)站訪問(wèn)統(tǒng)計(jì)是不完整的。
本統(tǒng)計(jì)系統(tǒng)能輸出以下統(tǒng)計(jì)報(bào)表:
1)統(tǒng)計(jì)系統(tǒng)概況頁(yè)面
該頁(yè)面以表格形式輸出統(tǒng)計(jì)統(tǒng)計(jì)的流量基本信息,包括總訪問(wèn)量、今日流量、昨日此時(shí)流量、昨日流量、本月流量、本年流量、最高流量及發(fā)生的日期、最低流量在發(fā)生的日期、當(dāng)前在線人數(shù)、最高在線人數(shù)及發(fā)生的時(shí)間等信息。效果如圖2。
(代碼從略)
2)在線用戶頁(yè)面
該頁(yè)面顯示了當(dāng)前正在瀏覽被統(tǒng)計(jì)網(wǎng)站的訪問(wèn)者的相關(guān)信息,包括訪問(wèn)者IP、訪問(wèn)者所在地區(qū)、首次打開(kāi)被統(tǒng)計(jì)網(wǎng)站的時(shí)間、停留的時(shí)間、以及所在頁(yè)面等信息。
3)訪問(wèn)明細(xì)頁(yè)面
該頁(yè)面顯示了從當(dāng)天的0時(shí)起訪問(wèn)被統(tǒng)計(jì)網(wǎng)站的訪問(wèn)者相關(guān)信息,包括包括訪問(wèn)者IP、訪問(wèn)者所在地區(qū)、打開(kāi)被統(tǒng)計(jì)網(wǎng)站的時(shí)間、通過(guò)什么網(wǎng)站進(jìn)入被統(tǒng)計(jì)網(wǎng)站的、進(jìn)入被統(tǒng)計(jì)網(wǎng)站的頁(yè)面、搜索的關(guān)鍵詞等信息。
4)搜索引擎分析頁(yè)面
該頁(yè)面以圖形方面顯示了通過(guò)常用搜索引擎來(lái)到被統(tǒng)計(jì)網(wǎng)站的各搜索引擎分布情況,效果如下圖3所示。
圖3
其他報(bào)表還包括關(guān)鍵詞分析、來(lái)路分析、入口網(wǎng)址分析、頁(yè)面瀏覽分析、日段分析、時(shí)段分析、周月段分析、客戶端瀏覽器操作系統(tǒng)分析等等不在一一贅述。
<b> 3結(jié)束語(yǔ)</b>
本網(wǎng)站訪問(wèn)統(tǒng)計(jì)系統(tǒng)可以自動(dòng)對(duì)網(wǎng)站的訪問(wèn)者信息進(jìn)行記錄,并能根據(jù)管理員的要求按時(shí)間和類別分別統(tǒng)計(jì)并顯示結(jié)果,根據(jù)系統(tǒng)自動(dòng)記錄的結(jié)果可以對(duì)網(wǎng)站的訪問(wèn)信息進(jìn)行分析、總結(jié),從而指導(dǎo)網(wǎng)站的規(guī)劃和建設(shè)工作。目前程序運(yùn)行良好,在每天10萬(wàn)以上的訪問(wèn)量的情況下能夠完全穩(wěn)定運(yùn)行,且系統(tǒng)占用CPU資源非常小。
參考文獻(xiàn):
[1]臺(tái)雯.基于ASP.NET實(shí)現(xiàn)網(wǎng)站訪問(wèn)統(tǒng)計(jì)功能[J].天津職業(yè)院校聯(lián)合學(xué)報(bào),2008(5).
[2]袁通路,孫彩萍,林海,曹俊霞.科技信息網(wǎng)站訪問(wèn)統(tǒng)計(jì)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].西安石油大學(xué)學(xué)報(bào):自然科學(xué)版,2005(5).
[3]潘家富.圖書(shū)館網(wǎng)站電子資源訪問(wèn)量統(tǒng)計(jì)的簡(jiǎn)單實(shí)現(xiàn)方法[J].情報(bào)探索,2006(9).