熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

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

2013-11-15 12:22:29  來源: PHP編程 

  看了網上很多統計都是使用文本來存儲信息的但是那樣的話非常不方便而且如果數據丟失了的話就很麻煩如果存儲在數據庫裡的話就比較好把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類庫
From:http://tw.wingwit.com/Article/program/PHP/201311/20831.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.