歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> PHP中利用MySQL進行訪問統計的思路

PHP中利用MySQL進行訪問統計的思路

日期:2017/2/27 14:23:24   编辑:更多Linux
  看了網上很多統計都是使用文本來存儲信息的,但是那樣的話非常不方便,而且如果數據丟失了的話就很麻煩,如果存儲在數據庫裡的話就比較好,把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類庫。。。




Copyright © Linux教程網 All Rights Reserved