看了網上很多統計都是使用文本來存儲信息的,但是那樣的話非常不方便,而且如果數據丟失了的話就很麻煩,如果存儲在數據庫裡的話就比較好,把WEB服務器和數據庫服務器分開的話,那麼就能夠長期的保持訪問統計的數據了。 基本訪問統計包括:日訪問量、月訪問量、總訪問量、平均訪問量、日最高訪問量等等數據 那些數據主要是關於時間的運算,為了方便運算,我們采用Unix時間戳是最方便合理的,下面我簡單的說以下我實現統計的代碼。
數據庫結構: # # 訪問統計表 # DROP TABLE IF EXISTS `st_Accesscount`; CREATE TABLE `st_accesscount` ( `access_id` int(11) unsigned NOT NULL auto_increment, `session_id` varchar(100) NOT NULL default '', `access_time` int(20) NOT NULL default '0', `access_ip` varchar(100) default NULL, `access_source` varchar(100) default NULL, `access_page` varchar(255) default NULL, `access_os` varchar(100) default NULL, `access_browse` varchar(100) default NULL, PRIMARY KEY (`access_id`) );
實現代碼: 我把核心代碼寫出來,其他顯示層代碼和復雜計算自己想想,呵呵 :-) <?PHP /********************************************* * 文件:count.php * 用途:網站訪問統計頁 * 版本:v1.0 * 創建:2005-04-06 17:08 * 修改:2005-04-06 17:14 * 版權: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(0,0,0); $db->query(" SELECT * FROM st_accesscount WHERE access_time>=$today AND access_time<=$time "); $today_count = $db->nf(); // 昨日訪問量 $yesterday = mktime(0,0,0,$c[m],$c[d]-1,$c[y]); $db->query(" SELECT * FROM st_accesscount WHERE access_time>=$yesterday AND access_time<=$today "); $yesterday_count = $db->nf(); // 本月訪問量 $month = mktime(0,0,0,$c[m],1,$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)/60/60/24; (($day-floor($day)) > 0) ? ($all_day = floor($day)+1) : ($all_day = floor($day)); // 總訪問量 $db->query(" SELECT * FROM st_accesscount "); $all_count = $db->nf(); // 日均訪問量 $day_access = round($all_count/$all_day, 1); ?> 上面的代碼比較清晰,自己慢慢琢磨,恩,另外說一句,上面使用了phplib的db類庫。。。