看了网上很多统计都是使用文本来存储信息的但是那样的话非常不方便而且如果数据丢失了的话就很麻烦如果存储在数据库里的话就比较好把WEB服务器和数据库服务器分开的话那么就能够长期的保持访问统计的数据了
基本访问统计包括日访问量月访问量总访问量平均访问量日最高访问量等等数据
那些数据主要是关于时间的运算为了方便运算我们采用Unix时间戳是最方便合理的下面我简单的说以下我实现统计的代码
数据库结构
#
#访问统计表
#
DROP TABLE IF EXISTS `st_accesscount`;
CREATE TABLE `st_accesscount` (
`access_id` int() unsigned NOT NULL auto_increment
`session_id` varchar() NOT NULL default
`access_time` int() NOT NULL default
`access_ip` varchar() default NULL
`access_source` varchar() default NULL
`access_page` varchar() default NULL
`access_os` varchar() default NULL
`access_browse` varchar() default NULL
PRIMARY KEY(`access_id`)
);
实现代码
我把核心代码写出来其他显示层代码和复杂计算自己想想呵呵 :)
<?php
/*********************************************
*文件countphp
*用途网站访问统计页
*版本v
*创建 :
*修改 :
*版权heiyeluren
*********************************************/
/* 网站访问量统计 */
/* 基本变量 */
// 当前时间
$cur_date = date(Y年m月d日 H:i:s);
$time = time();
// 把当前时间单独取出
$c[y] = date(Y);
$c[m] = date(m);
$c[d] = date(d);
$c[h] = date(H);
$c[i] = date(i);
$c[s] = date(s);
// 今日访问量
$today = mktime();
$db>query( SELECT * FROM st_accesscount WHERE access_time>=$today AND access_time<=$time );
$today_count = $db>nf();
// 昨日访问量
$yesterday = mktime($c[m]$c[d]$c[y]);
$db>query( SELECT * FROM st_accesscount WHERE access_time>=$yesterday AND access_time<=$today );
$yesterday_count = $db>nf();
// 本月访问量
$month = mktime($c[m]$c[y]);
$db>query( SELECT * FROM st_accesscount WHERE access_time>=$month AND access_time<=$time );
$month_count = $db>nf();
// 总统计天数
$db>query( SELECT MIN(access_time) AS ago_time FROM st_accesscount );
while($db>next_record())
{
$ago_time = $db>f(ago_time);
}
$day = ($time$ago_time)///;
(($dayfloor($day)) > ) ? ($all_day = floor($day)+) : ($all_day = floor($day));
// 总访问量
$db>query( SELECT * FROM st_accesscount );
$all_count = $db>nf();
// 日均访问量
$day_access = round($all_count/$all_day );
?>
上面的代码比较清晰自己慢慢琢磨恩另外说一句上面使用了phplib的db类库