基于ASP+MSSQL的多用户网站访问统计系统的设计与实现
2012-04-29孙铁军
孙铁军
摘要:网站的运营管理者需要了解网站的流量信息,以便制定以后的网站发展策略。该文以作者开发的且正在使用的网站访问统计系统为例,介绍该网站访问统计系统的基本设计过程及实现方法。该系统采用ASP+MSSQL2000技术实现,能够自动实时记录和统计网站访问者的访问情况,系统的管理者可以查看网站实时的网站访问统计信息。
关键词:ASP;MSSQLSERVER;多用户;网站;访问统计
中图分类号:TP312文献标识码:A文章编号: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
实时掌握自己网站的访问统计信息对一个网站的运营管理者来说重要性是不言而喻的,网站访问统计系统可以让运营管理者即时了解当前网站的访问统计状况,如访问量统计分析、访问者来路统计、搜索引擎统计、搜索关键词统计、访问者地区分布等等。通过对网站全面的流量统计数据分析,从而指导网站网站的运营管理者制定网站下一步的协规划发展方向。
对于一套网站访问统计系统来说,所使用的开发语言决定了它的执行效率,而统计系统的核心是对访问数据的存储与分析,开发语言我选择了ASP语言,数据库我选择了功能强大的MS SQL Server 2000作为数据存储的载体。
ASP是Active Server Page的缩写,意为“动态服务器页面”。是现在网络上一种应用比较广泛的服务器端脚本编写环境,可以用来创建和运行动态网页或Web应用程序并能方便的连接ACCESS与MSSQL数据库。
MS SQL Server 2000是Microsoft公司推出的功能强大、完整的关系型数据库系统,它以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台,它提供了数据完整性、安全性、事务处理、网络多用户处理等必备的功能。
<b> 1系统设计</b>
1.1系统功能设计
根据网站访问统计的工作要求,网站访问统计系统就具有以下功能:
1)能实现网站访问信息(如访问时间,访问者IP,访问者所在地区,所访问的页面等)的自动记录。
2)用户是通过何种途径来到网站的,访问了哪些页面、并在网站上停留了多长时间,以及客户端信息(如使用的操作系统、浏览器类型,屏幕大小,访问本站的次数等)进行分类汇总。
3)能够根据统计数据,自动生成各种统计报表。
4)能进行访问量的查询、统计、分析,并且以表格或图形方式进行输出。
1.2系统的总体结构
如图1所示,用户访问网站,统计系统自动记录,把基本信息整理后写人数据库。统计系统根据网站报表查看者的需要展示各种统计报表。
1.3数据库设计
数据库是统计系统的核心和支柱。数据库结构的合理性及优劣将直接影响整个应用系统的开发工作。在综合了各种统计的基本要求后,数据库主要表结构设计如下(限于篇幅,只列出第一张表的表结构信息)。1)在线用户表(Online),该表主要记录当前在线用户的信息。表结构如下表1:
2)用户访问明细表(LastUser),该表以时间访问先后顺序记录来访用户的一些基本信息,如来访时间、来访者IP、IP所属地区、所进入的页面、来路、来访时间等。表结构如下:
3)访问量表(Visits),该表以小时为时间段,记录每小时内网站的访问量(IP)和浏览量(PV)。
4)客户端信息表(Client),该表记录客户端的一些信息,如所使用的操作系统、浏览器、屏幕大小、所在地区等。
5)关键词表(Kword),该表记录用户通过搜索引擎搜索什么内容后访问到被统计网站的。
6)来路表(EngineCome),该表记录用户通过什么网站来到被统计网站的。
7)被统计网站页面表(Sitepage),该表记录被统计网站一天内被访问浏览了哪些页面以及每个页面访问浏览的次数和时间等信息。
8)防刷新IP列表表(TodayIP),该表只记录一天内访问过被统计网站的IP,且在每天0时以后自动清空。以保证一个IP一天内的多次访问只记录一个访问量(IP)和多个浏览量(PV)。
<b> 2系统的实现</b>
2.1嵌入统计代码
要想对被统计网站进行统计,需要在每个被统计的页面嵌入以下统计代码,<script src="/stat/mystat.aspsiteid=1"></script>,这样,当用户访问被统计网站的页面时嵌入的代码就会被执行,从而触发向服务器端提交相关信息。
mystat.asp文件中向服务器端提交信息的Javascript代码片段如下:
……
‘以下代码将获取的客户站相差信息提交到服务器进行处理
+ stat.aspstyle= + stat_style+ &siteid= + stat_siteid
+ &tzone= + stat_tzone
+ &tcolor= + stat_tcolor
+ &sSize= + stat_sSize
+ &referrer= + stat_referrer+ ></script>;
document.write(stat_outstr);
……
‘以下代码将定时向服务器端发送访问者的在线状态信息
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获取用户的访问信息
在ASP中主要通过Request对象获取客户端信息的,Request内置对象中的ServerVariables属性,用于获取HTTP表头中的信息,HTTP头中包含了一些如访问者IP、UserAgent等信息在客户端无法获取的信息。
2.3处理获取到的数据
对获取的数据进行整理并进行分类存储是网站访问统计系统的核心功能,数据处理的优劣及数据保存到数据库所需要的时间直接影响到整个统计系统的性能,所以,在数据数据处理时在保证正确处理的同时尽量做到代码精简,在数据存储时充分利用SQLSERVER批处理事务的功能,将保存数据的代码做过存储过程里,以尽可能快的速度完成数据的保存工作。
以下是数据处理及保存的核心代码片段:
……
服务器当前时间
truenow= now()
today0hour=datevalue(now())
是否新的一天isNewDay = false
if DateValue(Site_TodayDate) < DateValue(now()) then isNewDay=true 是否新的一天
新的一天
if isnewday then
执行新的一天的处理过程
为流量库添加当天的所有行
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已经存在于保存的列表中,是刷新
rs.close
set rs=nothing
if isre=0 then conn.Execute("insert into todayip (Site_ID,UserIP) values ("&SiteID&","&vIP&")") 写入当前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&"")页面浏览量
end If
conn.Execute("SaveTrack "&vIP&","&vpage&"," &SiteID&","&truenow&","&Site_SaveDays&"")浏览轨迹
……
2.4报表数据显示输出
统计报表显示输出是网站访问统计系统最基本的功能,没有输出的网站访问统计是不完整的。
本统计系统能输出以下统计报表:
1)统计系统概况页面
该页面以表格形式输出统计统计的流量基本信息,包括总访问量、今日流量、昨日此时流量、昨日流量、本月流量、本年流量、最高流量及发生的日期、最低流量在发生的日期、当前在线人数、最高在线人数及发生的时间等信息。效果如图2。
(代码从略)
2)在线用户页面
该页面显示了当前正在浏览被统计网站的访问者的相关信息,包括访问者IP、访问者所在地区、首次打开被统计网站的时间、停留的时间、以及所在页面等信息。
3)访问明细页面
该页面显示了从当天的0时起访问被统计网站的访问者相关信息,包括包括访问者IP、访问者所在地区、打开被统计网站的时间、通过什么网站进入被统计网站的、进入被统计网站的页面、搜索的关键词等信息。
4)搜索引擎分析页面
该页面以图形方面显示了通过常用搜索引擎来到被统计网站的各搜索引擎分布情况,效果如下图3所示。
图3
其他报表还包括关键词分析、来路分析、入口网址分析、页面浏览分析、日段分析、时段分析、周月段分析、客户端浏览器操作系统分析等等不在一一赘述。
<b> 3结束语</b>
本网站访问统计系统可以自动对网站的访问者信息进行记录,并能根据管理员的要求按时间和类别分别统计并显示结果,根据系统自动记录的结果可以对网站的访问信息进行分析、总结,从而指导网站的规划和建设工作。目前程序运行良好,在每天10万以上的访问量的情况下能够完全稳定运行,且系统占用CPU资源非常小。
参考文献:
[1]台雯.基于ASP.NET实现网站访问统计功能[J].天津职业院校联合学报,2008(5).
[2]袁通路,孙彩萍,林海,曹俊霞.科技信息网站访问统计系统的设计与实现[J].西安石油大学学报:自然科学版,2005(5).
[3]潘家富.图书馆网站电子资源访问量统计的简单实现方法[J].情报探索,2006(9).