首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 網絡流量統計系統:從數據庫設計到類封裝的完整實現

     編輯:PHP 相關知識

系統功能

  • 📈 記錄每個訪客的 IP、操作系統、瀏覽器、來源頁面、訪問時間
  • 📊 按天統計訪問量(1-31 日欄位),支持月度彙總
  • 🌐 多網站支持(WebInfo 表區分站點)
  • 🔧 基於《PHP和MySQL Web應用開發》書籍案例改進,親測可用

數據庫設計 (MySQL)

CREATE DATABASE IF NOT EXISTS FluxStat COLLATE 'gb2312_chinese_ci';
USE FluxStat;

-- 網站基本信息表
CREATE TABLE IF NOT EXISTS WebInfo (
    Id INT AUTO_INCREMENT PRIMARY KEY,
    WebName VARCHAR(50),
    WebUrl VARCHAR(200),
    StartTime DATETIME,
    nTotalNum INT DEFAULT 0,   -- 總訪問量
    nDayMax INT DEFAULT 0      -- 單日峰值
);

INSERT INTO WebInfo (WebName, WebUrl, StartTime, nTotalNum, nDayMax)
VALUES ('流量統計系統首頁', 'https://localhost/test3/FluxStat/index.php', '2015-07-07 00:00:00', 0, 0);

-- 訪客明細表
CREATE TABLE IF NOT EXISTS Visitors (
    Id INT AUTO_INCREMENT PRIMARY KEY,
    vTime DATETIME,       -- 訪問時間
    vIP VARCHAR(50),      -- IP 地址(支持 IPv6)
    vOS VARCHAR(50),      -- 作業系統
    vExp VARCHAR(50),     -- 瀏覽器
    vRef VARCHAR(50)      -- 來源頁面
);

-- 每日流量統計表(寬表設計,31 個日欄位 + 月總計)
CREATE TABLE IF NOT EXISTS FluxStat (
    Id INT AUTO_INCREMENT PRIMARY KEY,
    D1 INT, D2 INT, D3 INT, D4 INT, D5 INT, D6 INT, D7 INT,
    D8 INT, D9 INT, D10 INT, D11 INT, D12 INT, D13 INT, D14 INT, D15 INT,
    D16 INT, D17 INT, D18 INT, D19 INT, D20 INT, D21 INT, D22 INT, D23 INT,
    D24 INT, D25 INT, D26 INT, D27 INT, D28 INT, D29 INT, D30 INT, D31 INT,
    MTotalNum INT DEFAULT 0  -- 月總計
);

核心類結構

代碼組織為三個類文件,放置於 Class/ 目錄:

  • WebInfo.php:站點配置 CRUD、總計/峰值更新
  • Visitors.php:訪客明細寫入、UA 解析、來源記錄
  • FluxStat.php:日統計更新(按日期欄位自增)、月度彙總

關鍵邏輯:統計更新

<?php
// FluxStat.php 片段
public function addVisit($webId, $day) {
    // 1. 檢查當月記錄是否存在,不存在則初始化 31 個 0
    // 2. 更新對應 D{day} 欄位 +1
    // 3. 更新 MTotalNum +1
    // 4. 聯動更新 WebInfo.nTotalNum +1,並檢查 nDayMax
    $sql = "UPDATE FluxStat SET D{$day}=D{$day}+1, MTotalNum=MTotalNum+1 WHERE Id={$webId}";
    // ... 執行並處理不存在情況 INSERT ...
}

前端展示

配合 style.CSS 美化,提供:

  • 實時訪客列表(分頁、IP 歸屬地解析)
  • 日/月流量柱狀圖(可接入 ECharts/Chart.js)
  • 多站點切換儀表盤

部署注意

  1. 數據庫編碼指定 gb2312_chinese_ci,導入 SQL 前執行 SET NAMES gbk;。
  2. 入口文件 index.php 需在每頁引入統計代碼(或通過 Nginx access_log 異步分析,性能更優)。
  3. 定期清理 Visitors 明細表(保留近 3-6 個月),避免表膨脹。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved