欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

新探讨用PHP来纪录

程序员文章站 2022-06-08 10:17:54
...
假如你用一个很好的纪录分析器,像是Analog或一些类似的东西,那么算出你的网站点选是从哪里来和哪些网页被浏览过并不是太困难的事.

但是假如你想要使正在运作的报表停下来,你就必须用一个不一样的路线

大约六个月之前,我正在将Apache的纪录档案引进到一个SQL资料库,然後对他做一个特别的查询.

很不幸的,这使的我必须用手动的将这些纪录档案一个个抓取出来,稍微扭转一点形式,然後输出.我要一些更好的东西 -可以持续更新的东西,能给我哪些的内容被浏览的资讯,浏览器和平台的统计表,和随著时间的趋势.

这篇文章的解决方案版本可以让我很好的使用好几年.我提高他的重要性,当我们经由SourceForge系统建立SourceForge,经由这个SourceForge.net网站管线的所有纪录和轨迹,包含在这个网址上网页浏览者和在1200专案的每一个网页浏览者.

基本上,我要做的每一个纪录动作就是在一个资料库的资料表上增加一列(在这个范例是网页浏览者,但是你可以从其他的网址纪录横幅广告增加的浏览者,点选数,单独点选..等等)

这个就是我正在SourceForge上使用的资料表结构:

create table activity_log (
day integer DEFAULT 0 NOT NULL,
hour integer DEFAULT 0 NOT NULL,
group_id integer DEFAULT 0 NOT NULL,
browser varchar(8) DEFAULT OTHER NOT NULL,
ver float(10) DEFAULT 0.00 NOT NULL,
platform varchar(8) DEFAULT OTHER NOT NULL,
time integer DEFAULT 0 NOT NULL,
page text,
type integer DEFAULT 0 NOT NULL

);

假如你要试著去纪录多重的网址的话,group_id这一栏可以使用.只要对每一个网址分配不同的group_id,而且将他传递在URL的位址上(显示在下面).

type在这些范例是未用过的,但是你可以使用他去追踪不同类型的行为,像是广告的点选数,从别的网址过来的点选数..等等.

browser,ver,platform 都可以从你的浏览器传送到网站伺服器的一步就是将资料转到资料表里面.假如所有在盒子里面的所有经由PHP和其他所有不同的网站都有用的话,那真是个完美的世界.不幸地,我有大量的伺服器散布在整个国家之中,而且我要一天24小时搜集每一个伺服器的每一个网页浏览资讯.

所以我必须要使用一个1x1 像素的GIF小技巧.我有一个GIF在每一个伺服器的网页,看起来像这样:



在这个图形中有四个元件

Remote web server
Web browser (参观网站的使用者)
Central logging server
Central database server

所以当使用者参观网站,得到一个网页来使用,浏览器向伺服器中心要求看到一个1x1的gif图片.伺服器中心纪录那些资讯使的产称报表更容易.

报 表

只要写一些简单的SQL就可以产生所有的资料
使用 ShowResults() function来显示 你也可以用图来表示(参考prior article)

现在我可以在任何时间执行我的统计报表

Sample SQL to run reports
Page Views By Day

SELECT day, count(*)
FROM activity_log
WHERE type=0 GROUP BY day

Page Views By Browser

SELECT browser, count(*)
FROM activity_log
WHERE type=0 GROUP BY browser

Page Views By Browser Version

SELECT browser, ver, count(*)
FROM activity_log
WHERE type=0 GROUP BY browser, ver

Page Views By Platform

SELECT platform, count(*)
FROM activity_log
WHERE type=0 GROUP BY platform

这里.zip 包含 browser detection 和 database abstraction libraries.