【PHP开源代码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了PHP开源代码-【硕士论文】使用PHP技术构造Web服务器日志分析软件 - 硕士论文的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
中文摘要 随着INTERNET的快速发展,WEB网站的访问量越来越大。
网站的维护和安全已经成为了一个重要问题。
WEB日志如实地记录了网站的被访问情况,因此日志分析可以帮助我们进行日常维护和科学的决策。
国外出现了大量日志分析工具,可以从各个角度对日志文件进行深入地剖析,并将分析结果以报表形式呈现给用户。
这些国外分析工具虽然性能优越,但是往往价格昂贵而且都是英文界面,另外它们提供的一些报表也不太符合用户的需求。
本项目包含了国外日志分析软件的大部分功能,主要面向数据库资源中心的网站。
根据该中心的具体需求定制日志分析报表。
通过报表可以准确地反映出中心网站各专业数据库,各页面的实际使用情况。
同时也可支持站点的日常维护和安全防护。
PHP技术是比较成熟的WEB开发技术,而且具有
开源免费的特点。
PHP拥有大量免费的组件可以提高开发效率。
PEAR是PHP扩展及应用程序存储库,里面包含了构造WEB程序所需的大量组件。
本项目利用PEAR MDB2可以连接多种数据库软件,提高了适用性,利用PEAR自带的PDF组件将报表存储到PDF文件中。
JpGraph组件快速构建曲线图,丰富了软件的界面。
本项目还可以利用PHP技术进一步扩展为站点监控系统,而不仅仅局限于日志分析。
关键词:PHP技术,PEAR技术, 日志分析,WEB开发 第一章概述 第一章概述 随着因特网技术的高速发展,web网站的资源访问状况、网站的智能化决策支持以及网站的综合分析与评价越来越受到关注。
web站点的拥有者往往需要知道自己的站点哪些栏目受欢迎,哪些栏目很少有人问津。
每个栏目的实际使用率如何,站点提供资料的受欢迎程度如何。
这些问题需要一套高效准确的Web服务器日志分析工具来处理,它不是简单地统计点击率而是对一个网站实际使用情况的综合评价。
可用于组合查询的元素包括时间元素,IP地址元素,栏目元素,网页请求状态,学科类别元素等。
该系统尤其在图书馆镜像数据库中有着广泛的应用前景。
每年高校图书馆需要购买大量的数据库资源,其中相当一部分是镜像数据库。
镜像数据库经过购买授权后,存储在图书馆的服务器上,并且定时更新。
它为师生们提供了~种在校园网内高速获取资料的方式。
因为所有资源都在图书馆的服务器上,所以用户的访问信息也被完整记录下来。
可以利用web服务器日志文件和DBMS获得比较完整的资源访问情况,大大方便了分析决策。
通过统计专业数据库访问数据和相关图表,决策者可以知道数据库的访问频率、数据库中的栏目使用频率以及各高校使用数据库的情况等等。
如果将多个高校的数据库使用信息综合起来,可以为资源合理配置提供决策依据。
不仅节约经费而且还可以优化数据库的布局,提高访问效率。
I.I目前国内国外流行的日志分析工具I.I.1 Summary.Net日志分析及流量监控软件 一个商业化的日志分析软件,特点: 1,界面简洁而且报表数量庞大(大约可生成200张报表)。
2,由文件直接生成报表,不需要中间数据库。
3,B/S模式,从浏览器进行所有操作。
自带web引擎,不需要安装特殊的 web支持软件。
4,站点流量,峰值统计计算非常细致。
5,每一张报表,每一个术语都有完整的帮助信息。
报表可保存为EXCEL格 式。
第一章概述1.1.2 Webtrends最完善的日志分析工具 全球web分析器的领军企业,拥有12年的开发经验,占有很大的市场份额。
全球多家知名web分析组织都使用webtrends的产品。
其产品不仅仅局限在数据挖掘统计,还有站点安全防护的功能。
WebTrendsAnalrdcs系列软件可以灵活地多角度地挖掘数据,定制各种报表,满足大部分商业需要。
版本分为:基础版,市场版,高级市场版,商务版。
每一个版本的产品都拥有华丽的G1J1界面,而且提供了访问WEB服务器日志数据的多种方法。
1.1.3 AWStats
开源免费的日志分析工具 AWStats虽然是
开源产品,但是基本功能齐全,用经典的perl语言开发,可以说是日志分析工具中的佼佼者。
运行起来需要perl环境支持。
1.2日志分析软件的功能需求 通过上面的分析我们可以看到,虽然日志分析工具种类很多,但是许多功能是相同的。
主要功能如下所示:1.2.1日志文件的数据导入 主要有两类,一类是直接由文件生成报表,读取文件的同时生成报表。
这种方法很简洁,不需要安装额外的软件。
日志文件经过几次遍历之后就可以得到分析结果,分析结果存盘直接得到报表。
但是这样做的缺点就是欠灵活,如果需要增加报表,那么又要重新分析日志文件。
假如要重新分析的日志文件是几天前的,而且系统又设置了文件定期清除,那么可能根本就找不到需要的日志。
我们采用了另一种方法~将文件导入数据库后再分析。
可以在一台服务器上安装数据库软件,将其他几台服务器的日志文件导入该数据库中,然后放心地删除这些日志文件。
得到的数据库聚集了几个服务器的日志,不仅可以生成报表,而且也可以形成数据仓库,进行更深一步地数据挖掘。
大部分DBMS都有定期备份功能,可以利用该功能将数据备份到其他存储介质 E。
第一章概述 科学地统计网页访问情况 在指定时间段内,各网页的访问情况到底如何?首先必须明确如何算网 页被访问了一次。
一般分为三种: A),一个网页文件只要被请求,数据库中有一条记录就算被访问一次。
B),一个网页文件在指定的时段内被同一D访问n次,统统算为被访 问一次。
C),一个独立的P地址无论访问多少次网页都算一次。
一般情况下需要对所有网页的访问总量进行大排行,看看到底哪些内容最 受欢迎。
更进一步,还可以以文件后缀名为类型索引,统计哪些文件类型是 受访问最多的。
一般情况下的网页访问量统计数据有: 舢,网页访问总数。
给用户一个确切的统计总数。
B),平均访问数,在时间段中平均网页访问量。
C),上一次统计的访问总量,可以做到历史对比。
D),统计单个网页访问量占所有网页总量的百分比,可以使报表清晰 地指示出该网页的受关注程度。
E),根据文件类型进行统计。
用户可以对网页概念进行扩展和延伸, 比如指定HTML,HTM,ASP,JSP,PFIP文件的访问为标准网 页访问行为。
指定EXE,AVI,PDF文件的访问视为下载行为, 单独统计下载报表。
Jpg,gif文件的访问视为网页访问的附属, 可以不进行统计。
F),增长率,该网页访问量较之以前的增长/减少幅度。
1.2.3时间段统计分析 除了关注网页资源以外,我们还需要关注在不同时间段的站点访问情况。
一般是以小时、天、周、月、季度,年为单位进行分析统计。
如果按照小时进行分析,则在给定时间段中,每隔一个小时做一次分析操作。
天、周、月、季度,年同样如此。
还有就是自由给定时间段,按照指定时间片进行统计。
需要统计的数据一般包括访问网页数,独立口数,请求成功/失败数,发送流量大小。
在进行时间段统计时,有时候需要关心到底有多少的用户访问。
独立IP数可以部分反映问题。
我们还可以设定在单位时间内,同一个IP不间断地访问算作一次用户访问。
通过这种定义来统计出具体访问量,这样可以过滤掉用户偶然访问的情况,使数据更加真实可靠。
比如,某站点主要提供检索服务,而站点主网页本身没有什么吸引人的内容。
也就是说,如果用户真的需要利用站点,那么 第一章概述该用户应该提交查询表单,从而获得要查询的数据。
于是我们设定,同一m在20分钟内,有2个或2个以上的网页请求才算作一次访问。
否则说明某口只是偶然访问到站点,没有进行任何检索,这样的请求自然没有什么统计意义,应该被过滤掉。
当然设立这样的条件有可能会错误地过滤掉一小部分数据,但这并不影响整体数据的统计效果。
而且我们可以累计所有访问过的独立P数,弥补给用户。
当然累计的总数有时候看起来比较枯燥,为了能够更加明确地反映单位时间内的访问情况,我们需要统计占有比率。
被访问网页总数比率,用户访问量比率,流量总数比率等等。
比如我们统计在过去的24小时内,每个小时的访问情况。
用每个小时被请求的网页总数除以24小时内所有的网页总数,得到一个小时内的网页访问率。
用户访问量比率,数据流量比率也是同样。
这样就可以清楚地看出来在过去的24小时内,哪些时间段网页请求数量大,哪些时间段用户访问量高,哪些时间段的系统数据量大。
这些比单纯的累计数字往往更能说明问题。
当然这些统计数据不仅仅反映在报表中,也可以反映在曲线图、柱图或者饼图上。
网页的请求不是每次都能成功的,也存在错误情况。
HTTP状态信息有很多,一般主要关心的有: A),状态200表示请求成功。
B),状态301表示请求对象被永久转移。
C),状态400表示请求不能被服务器解读。
D),状态404表示请求的文档不在服务器上。
E),状态505表示服务器不支持请求报文使用的HTl甲协议版本。
我们将每个时间段中各种HTTP状态信息的统计情况写入报表。
这样就可以清晰地分析出每个时段的网页相应情况,从而可以帮助有效分析可能存在的服务器故障。
在分时段统计中,我们有时候会对一些明显异常的数据感兴趣。
比如某天17点到18点,这一个小时中数据访问量忽然增大,甚至于大于过去几个小时的总和。
而在某一天所有访问量几乎为0。
这些明显异常的数据在有的软件中通过醒目的颜色标出,在有的软件中干脆单独拿出来另组一张报表。
这对于网络管理员及时发现并排除问题非常有好处。
一些报表还提供了不同时段对比的功能。
在两个不同的时段内,比如2006年1月与2006年2月的对比。
通过对比,可以看出访问量,网页访问数,下载量,整体流量等等变化趋势,从而为站点的改进提供依据。
4 第一章概述1.2.4分析用户的来源分布 一般日志分析软件会内置一部分口地址范围,比如哪些地址范围属于中国,哪些属于美国,哪些属于俄罗斯等等。
有的界面比较精美的软件,甚至还为不同的国家地区配上了小旗子。
但这些地址范围往往比较粗大,用户可以根据需要自己细化地址范围。
比如某某地址段属于某某地区或者单位,然后可以针对m地址分布范围进行统计。
分析软件可以自己根据已定义的范围,对数据进行分析归类。
和单纯以网页为中心的统计方式不同,从口地址的角度进行统计,可以分析出访问网站的用户分布特点和习惯行为。
常见的功能有: 1),某个口地址段访问网页总数,下载总量。
可以清晰地看出访问自己站 点的用户主要来自哪些地区。
如果部分网页采用GET方式提交表单数据, 还可以分析出用户的查询行为和查询条件。
2),某个D地址段访问网页平均数。
3),某个口地址段历史访问网页数。
4),某个IP地址段访问网页或者下载内容频繁程度的排行。
比如列出来自 天津大学的所有P最频繁访问的前十个网页。
这样就可以很清楚地看出来 来自天津大学的用户对本站点的哪些内容特别感兴趣,对哪些内容不太感兴 趣。
5),IP地址段的分时段访问峰值。
对于某口地址段不同时段的访问频率进 行统计,并列举出该部分用户最频繁访问的时间段。
假如要分析来自天津大 学的用户在过去24小时中,每个小时的访问频率。
日志分析软件首先要统 计在上一个小时中,有多少天津大学的用户访问本站点。
然后再分析前一个 小时中的访问情况。
一直分析到24小时以前,最后列举出在过去的不同时 间段访问频率。
这样就可以看出来,来自天津大学的用户主要集中在哪个时 段访问我们的站点。
6),通过分析单个P地址的行为,可以有效地防止黑客攻击。
有的日志分 析软件具有强大的口追踪功能,可以分析某些用户的异常行为。
有的日志 文件往往几十兆甚至几百兆大,用手工分析的方法显然不现实,所以必须通 过日志分析软件进行定位追踪。
比如,Unieode漏洞攻击,一般在日志中都 会留下这样的查询信息:GET/scripts/..\../winnt/system32\emd.exe/c+dir 200。
黑客往往会在攻击之前对于站点进行踩点,试探,这些都可以从日志中反映 出来。
有的黑客会在攻击之后试图删除日志文件,如果分析软件具有定时倒 入数据的功能,那么就可以保留下宝贵的记录信息。
. 第一章概述 一般情况下,同一个IP对于同一个网页连续两次请求视为一次Ⅺ扎OAD行为。
日志软件需要对RELOAD比较频繁的网页进行排序和列举。
通过这张报表,可以清晰地看出哪些网页经常被RELOAD。
这些RELOAD操作到底用掉了多少流量。
网页被频繁地RELOAD,可能是由于保存该网页的站点被频繁地访问,结果导致网页打开速度过慢。
用户长时间打不开网页,于是频繁地发出请求。
这时候就应该考虑网站的部署是否合理。
该站点服务器是否需要升级等等。
如果我们提供下载的文件被频繁地RELOAD,那么很可能是用户利用下载工具进行多线程下载。
这种下载会占有大量的网络带宽,应该考虑限制这种行为或者把下载资源转移到FTP服务器上进行集中管理。
1.2.6带宽峰值的统计 统计站点的带宽占用,各个不同时段的流量峰值,对于站点维护非常有帮助。
一般日志分析程序都具有这个功能。
首先是以某个时间片断为单位统计流量和网络传播速率。
假设时间片段设为1个小时。
分析软件将日志文件中的记录以1个小时为间隔进行分组,然后统计每个小时的发送数据量,最后列出报表。
此报表详细地显示了每个小时的流量使用情况,和BPS(每秒比特数),被访问网页数,访问者数等等。
报表可以排序,这样就反映出什么时间站点访问量最大,什么时候比较小,什么时候带宽最大。
, 日志软件还可以统计被请求的文件的发送数据量,占用带宽情况。
被请求的文件可能是网页文件也可能是提供下载的数据文件。
日志软件可以累加每个被请求文件的发送数据总量,然后除以时间段得出BPS,这样就可以反映出哪些文件占用带宽最多,被请求下载次数最多。
对于占用带宽非常大的文件,可以镜像到其他的服务器中,以便减少网络负载。
同样对于几乎没有被请求的文件,可以考虑调整,不再占用服务器资源。
单纯看文件有时候还不太说明问题,因为一些文件尤其是图形文件,往往是作为网页的附属被发送到客户端。
为了具体看出网站的哪些频道栏目最受欢迎,应该以路径作为中心进行统计。
比如本网站的所有下载视频资源统统放在/download/video下,因此要统计视频的带宽使用情况必须统计该目录。
同样日志软件累加所有该目录下文件的数据发送量,然后除以时间片断,得出该目录所占的网络带宽。
排序这张报表就可以看出,站点上的哪些频道栏且占用带宽最大,从而说明最受欢迎。
6 第一章概述 假如所有的视频文件是分散在不同目录下,哪我们如何统计所有视频文件的带宽占有量呢?为了解决这个问题,很多日志分析软件提供了文件类型统计报表。
以文件后缀名为作为文件类型的标志,进行统计。
比如将文件后缀名avi、mpg、rmvb统一设置为视频文件,然后统计所有视频文件占用的带宽,发送总流量,访问者数量,生成可排序的报表。
这样就可以清晰地反映出各种类型文件下载及占用带宽的情况。
1.2.7利用Referer追踪用户的行为 在ⅡS的W3C扩展日志文件格式中提供了referer引用站点属性。
它的主要含义是:如果用户访问了pagel.html,通过pagel又链接到了page2。
那么page2的referer属性就会记录下pagel。
正是利用这一点,日志分析软件可以追踪用户在站点上的行为。
C.碑UⅪ-S1EM 图1.1同一个用户留下的访问纪录 假设只考虑用户在一个站点内的行动,那么可以忽略URL中的口地址或者域名,只考虑路径。
这样就可以把URI.STEM和REFERER对照起来。
图1.1表示的是同一个用户(202.113.19.X)在日志里留下的记录。
通过分析可以看到,用户首先访问了pagel网页,然后经由pagel上的链接到达了page2,再由page2上的链接到达了page3。
这样一条很清晰的访问路径就构成了。
我们可以考虑用户到达page3是否经历了太多的链接?是否可以在pagel上直接加入page3链接?假如page3只能通过page2到达,并且page3的页面访问数却明显大于page2,那么是否会有黑客袭击的可能? 很多日志分析软件通过referer属性可以分析出用户完整的访问路径,从而为测试网站,优化网站程序,防止黑客攻击提供了决策依据。
一个运转正常的站点的referer统计分析结果应该和站点原有程序设计基本吻合,否则就应该存在问 7 第一章概述题。
\ 同时这种分析也可以存入数据仓库,进行更为复杂的数据挖掘。
1.2.8站点入口和出口的统计 很多日志分析软件还包括了站点入口和出口分析,这样网站管理者就可以看到哪些用户喜欢从哪里作为站点的入口,哪些用户从哪里离开站点的。
入口的分析依据是:日志文件中,独立记录块中,用户最早申请的网页或者路径。
出口的分析依据是:在一个独立的记录块儿中,用户最后请求的网页或者路径。
很显然多媒体文件,图形文件,javascript
代码文件不能作为入口点分析,只有页面或者路径有这个资格。
Apache的日志文件结构是连续下来的一大块纪录。
而iis的W3C扩展日志文件则比较灵活,当每次启动服务是,都会在日志文件中重新开始一个表头,表头记录了启动的详细时间。
这样在同一个文件中,记录有详细起始时间的表头把整个文件划分为一个个记录块。
一个记录块代表IIS的一次启动。
图1-2 IIS日志文件中的记录块 图l-2表示了典型的IIS日志文件结构,网站在12月1号lO点01分启动,表头被写入,日志开始记录。
后来因故IIS停止。
站点在14点51分再次启动,一个记录有详细启动时间的表头被写入,从而开始了一个新的记录块。
日志分析程序首先确定一个记录块,先后对于某一个P地址在记录块中搜索它最早请求的网页文件或者路径,将结果记录下来。
同样搜索该IP在记录块儿中最后一次申请,并记录。
然后列出入口报表,将所有的入口点按照频率大小列出。
通过该表可以看出来,某入口点被访问多少次,访问最多的IP地址段。
出口报表也是同样。
第一章概述 如果在入口统计中,某不该作为入口点的网页被列举出来(比如必须登陆才能进入的网页),那么就一定存在问题。
可能是被攻击也可能是站点的程序本身有问题。
同样如果一些出口网页中如果不包括某些网页,则有可能这些网页被访问的次数太少了,也许根本就没必要存在。
以上介绍的是一些日志分析软件具有的常规功能,我们的项目实现了里面的大多数功能。
9 第二章PI-IP、PEAR技术及AJAX技术介绍 第二章PHP、PEAR技术及AJAX技术介绍2.1 PHP技术介绍2.1.1什么是PI-IP技术 什么是
php?Php是Hypertext Preprocessor(超文本预处理器)的缩写,它是一种运行在服务器端的语言。
在功能上与perl语言,jsp语言,asp.net语言类似。
PHP必须和IIS或者APACHE这些WEB服务器软件配合才能使用,一般和APACHE配合比较多。
PHP的
代码文件一般后缀名为.
php,实际上是嵌入了PI--IP
代码的HTML文件。
“<?
php”与“?>’’共同构成了PHP
代码标记。
在
代码文件中,所有的PHP程序均包含在PHP
代码标记中,所有
代码标记以外的内容一律视为Hn亿
代码。
当用户向服务器提交了一个PHP文件申请后,APACHE将用户的申请参数和PHP
代码文件一并传给PHP处理程序。
‘在WINDOWS操作系统中,PHP处理程序实际上就是一些DLL文件。
接下来PI-IP处理程序将分析
代码文件,并将处理结果以HTML文件的格式,以数据流的形式发送给用户浏览器。
处理程序仅仅处理
代码标记<9
php?>中的程序,并把运算结果输出给用户。
对于标记以外的内容,处理程序原封不动地发送给用户。
用户浏览器接到的是一个标准的HTML网页文件,里面不包含PHP
代码但却包含它的运算结果。
PI-IP的官网是:www.
php.net2.1.2 PHP语言概述 1),PHP的一些基本特性: Php中的浮点数均为64位浮点数,14位精度。
整数是32位整,没有无符号整数。
Php中没有整数除法,只有浮点数除法。
如果做除法的过程中有整数溢出,则会溢出成浮点数。
Php5用echo“….”方法将数据输出到数据流中。
Php中所有的变量都是以“¥”开头,比如¥a,¥il,¥myfile等等。
在用户通过表单提交数据后,
php自动将表单变量填入S POST〔〕或者S GET〔〕数组中。
通过S__POST〔‘表单名’】或者S GET〔‘表单名’】访问表单变量值。
无论用户是通过GET或者POST方式提交表单数据,通过数组¥REQUEST〔‘表单名’】都 第二章PHP、PEAR技术及AJAX技术介绍可以得到表单变量值。
PHP通过给变量赋予不同类型的值来动态改变数据类型。
比如: St=O.0//此时¥t是浮点类型 St=’’abe’’//此时¥t变成了字符串类型。
在
php中所有的全局变量都保存在全局变量数组¥GLOBALS〔〕中。
所有的服务器环境变量都保存在数组¥SERVER〔〕qj。
所有来自用户浏览器的COOKIE都保存在¥COOKIE〔-〕数组中。
所有的会话变量均保存在¥SESSION会话变量数组中。
在PHP中unsetO@数经常被用于销毁一个变量,但是它的作用不是简单的清除一块内存空间。
比如: 栌5;//变量¥b的值为5 ¥a=&¥b;‖变量¥a和¥b指向同一块存储空间。
unset(¥a);‖销毁变量¥a。
虽然变量¥a被销毁,但是它所指向的内存空间并没有被释放。
因此¥b变量的值依然为5。
在
php中用gettype0和settype0来操作变量的类型。
用gettypeoi函数返回一个变量的类型,用settypeOi函数动态改变一个变量的类型。
虽.