[Teanary] 因为 google 流量统计打不开了,新增了流量统计功能,这是开发文档,可以轻松扩展为数据洞查

news/2026/1/18 14:43:06/文章来源:https://www.cnblogs.com/teanary/p/19498503

流量统计功能文档

截图 2026-01-18 14-15-14
仓库地址:https://gitee.com/teanary/teanary_service

目录

  • 功能概述
  • 功能特性
  • 技术架构
  • 配置说明
  • 使用方法
  • 数据管理
  • 常见问题

功能概述

流量统计功能用于统计网站前台的访问数据,包括真人访问和爬虫访问。系统会自动区分访问者类型,并记录详细的访问信息,帮助管理员了解网站的访问情况。

主要功能

  • ✅ 自动统计前台访问流量
  • ✅ 区分真人访问和爬虫访问
  • ✅ 识别爬虫来源(Google、Bing、Baidu等)
  • ✅ 缓存数据,批量写入数据库(每5分钟)
  • ✅ 自动清理过期数据(默认保留90天)
  • ✅ 提供统计看板和详细列表页面

功能特性

1. 智能过滤

系统会自动排除以下请求:

  • ❌ 管理后台(/manager/*
  • ❌ 个人中心(/user/*
  • ❌ API 路由(/api/*
  • ❌ 静态资源(.css, .js, .jpg, .png 等)
  • ❌ 非 GET 请求

2. 爬虫识别

系统能够识别以下类型的爬虫:

搜索引擎爬虫:

  • Google (Googlebot)
  • Bing (Bingbot)
  • Baidu (Baiduspider)
  • Yandex (Yandexbot)
  • Yahoo (Slurp)
  • DuckDuckGo (Duckduckbot)
  • Sogou (Sogou)

社交媒体爬虫:

  • Facebook (Facebookexternalhit)
  • Twitter (Twitterbot)
  • LinkedIn (Linkedinbot)
  • Pinterest (Pinterestbot)

其他爬虫:

  • Semrush (Semrushbot)
  • Ahrefs (Ahrefsbot)
  • Majestic (Mj12bot)
  • Dotbot
  • 以及其他通用爬虫(bot、crawler、spider等)

3. 数据记录

每条流量记录包含以下信息:

  • 路径 (path): 访问的页面路径
  • 方法 (method): HTTP 方法(通常为 GET)
  • IP 地址 (ip): 访问者的 IP 地址
  • 用户代理 (user_agent): 浏览器或爬虫的用户代理字符串
  • 来源页面 (referer): 来源页面的 URL
  • 语言 (locale): 访问时使用的语言代码
  • 是否爬虫 (is_bot): 是否为爬虫访问
  • 爬虫来源 (spider_source): 爬虫的具体来源(如 google、bing 等)
  • 访问次数 (count): 同一分钟内相同路径的访问次数
  • 统计时间 (stat_date): 统计日期(精确到分钟)

技术架构

数据流程

用户访问 → TrackTraffic 中间件 → 缓存数据 → 批量写入队列 → 数据库

核心组件

  1. 中间件 (TrackTraffic)

    • 位置:app/Http/Middleware/TrackTraffic.php
    • 功能:拦截请求,记录流量数据到缓存
  2. 批量写入任务 (BatchWriteTrafficStatsJob)

    • 位置:app/Jobs/BatchWriteTrafficStatsJob.php
    • 功能:每5分钟批量将缓存数据写入数据库
  3. 数据清理命令 (CleanOldTrafficStats)

    • 位置:app/Console/Commands/CleanOldTrafficStats.php
    • 功能:清理超过指定天数的历史数据
  4. 数据模型 (TrafficStatistic)

    • 位置:app/Models/TrafficStatistic.php
    • 功能:定义数据结构和查询方法
  5. 管理界面

    • 统计看板:app/Filament/Manager/Pages/TrafficStatistics.php
    • 详细列表:app/Filament/Manager/Resources/TrafficStatisticResource.php

缓存机制

  • 使用 Laravel Cache 存储临时流量数据
  • 缓存键格式:traffic:queue:Y-m-d-H-i
  • 缓存过期时间:1小时
  • 每5分钟批量写入一次数据库

配置说明

1. 中间件注册

中间件已在 routes/web.php 中注册:

Route::prefix('{locale}')->middleware([SetLocaleAndCurrency::class, \App\Http\Middleware\TrackTraffic::class
])->group(function () {// 前台路由
});

2. 定时任务配置

routes/console.php 中已配置:

// 流量统计批量写入任务(每5分钟执行一次)
Schedule::command('app:batch-write-traffic-stats --queue')->everyFiveMinutes()->withoutOverlapping()->runInBackground();// 流量统计数据清理任务(每天凌晨2点执行,清理90天前的数据)
Schedule::command('app:clean-old-traffic-stats')->dailyAt('02:00')->withoutOverlapping();

3. 数据库表结构

表名:traffic_statistics

主要字段:

  • id: 主键(雪花ID)
  • path: 访问路径(索引)
  • method: HTTP 方法(索引)
  • ip: IP 地址(索引)
  • user_agent: 用户代理
  • referer: 来源页面
  • locale: 语言代码(索引)
  • is_bot: 是否为爬虫(索引)
  • spider_source: 爬虫来源(索引)
  • count: 访问次数
  • stat_date: 统计时间(索引,精确到分钟)

使用方法

1. 查看统计看板

  1. 登录管理后台
  2. 导航到 统计流量统计看板
  3. 可以查看:
    • 总访问量、页面浏览量、独立IP、独立页面
    • 真人访问和爬虫访问的对比
    • 热门页面 Top 20
  4. 支持筛选:
    • 日期范围:今天、昨天、最近7天、最近30天、最近90天
    • 访问者类型:全部、真人访问、爬虫访问

2. 查看详细列表

  1. 登录管理后台
  2. 导航到 统计流量明细
  3. 可以查看每条访问记录的详细信息
  4. 支持筛选:
    • 访问类型(真人/爬虫)
    • 爬虫来源
    • 日期范围

3. 手动触发批量写入

如果需要立即将缓存数据写入数据库,可以执行:

php artisan app:batch-write-traffic-stats

4. 手动清理数据

清理超过指定天数的数据:

# 清理90天前的数据(默认)
php artisan app:clean-old-traffic-stats# 清理30天前的数据
php artisan app:clean-old-traffic-stats --days=30# 清理180天前的数据
php artisan app:clean-old-traffic-stats --days=180

数据管理

数据保留策略

  • 默认保留时间:90天
  • 清理时间:每天凌晨2点自动执行
  • 清理方式:分批删除,每批1000条记录

数据统计方法

获取指定时间范围内的统计数据

use App\Models\TrafficStatistic;
use Illuminate\Support\Carbon;// 获取最近7天的所有数据
$startDate = Carbon::today()->subDays(6);
$endDate = Carbon::today()->endOfDay();
$stats = TrafficStatistic::getStatsByDateRange($startDate, $endDate);// 只获取真人访问数据
$humanStats = TrafficStatistic::getStatsByDateRange($startDate, $endDate, false);// 只获取爬虫访问数据
$botStats = TrafficStatistic::getStatsByDateRange($startDate, $endDate, true);

获取热门页面

// 获取最近7天的热门页面 Top 10
$topPages = TrafficStatistic::getTopPages($startDate, $endDate, 10);// 只获取真人访问的热门页面
$topHumanPages = TrafficStatistic::getTopPages($startDate, $endDate, 10, false);// 只获取爬虫访问的热门页面
$topBotPages = TrafficStatistic::getTopPages($startDate, $endDate, 10, true);

常见问题

Q1: 为什么有些访问没有被统计?

A: 系统会自动排除以下请求:

  • 管理后台和个人中心的访问
  • API 路由
  • 静态资源文件
  • 非 GET 请求

如果您的访问路径符合以上条件,将不会被统计。

Q2: 数据多久写入一次数据库?

A: 系统每5分钟自动批量写入一次。如果需要立即写入,可以手动执行 php artisan app:batch-write-traffic-stats 命令。

Q3: 如何修改数据保留时间?

A: 有两种方式:

  1. 修改定时任务:编辑 routes/console.php,修改 --days 参数
  2. 手动执行:执行 php artisan app:clean-old-traffic-stats --days=天数

Q4: 爬虫识别不准确怎么办?

A: 可以修改 app/Http/Middleware/TrackTraffic.php 中的 isBot()getSpiderSource() 方法,添加或修改爬虫识别规则。

Q5: 如何查看缓存中的数据?

A: 可以使用 Laravel Tinker:

php artisan tinker

然后执行:

// 查看某个时间点的队列
Cache::get('traffic:queue:2026-01-17-14-30');// 查看所有流量相关的缓存键(需要 Redis)
Redis::keys('traffic:*');

Q6: 数据量很大,会影响性能吗?

A: 系统采用了以下优化措施:

  • 使用缓存暂存数据,减少数据库写入频率
  • 批量写入,每5分钟写入一次
  • 使用索引优化查询性能
  • 自动清理过期数据,控制数据量

如果数据量仍然很大,可以考虑:

  • 缩短数据保留时间
  • 增加批量写入频率
  • 优化数据库索引

Q7: 如何禁用流量统计?

A:routes/web.php 中移除 TrackTraffic::class 中间件即可。

Q8: 可以统计其他路径吗?

A: 可以修改 app/Http/Middleware/TrackTraffic.php 中的 shouldTrack() 方法,调整过滤规则。

相关文件

  • 中间件:app/Http/Middleware/TrackTraffic.php
  • 批量写入任务:app/Jobs/BatchWriteTrafficStatsJob.php
  • 清理命令:app/Console/Commands/CleanOldTrafficStats.php
  • 数据模型:app/Models/TrafficStatistic.php
  • 统计看板:app/Filament/Manager/Pages/TrafficStatistics.php
  • 详细列表:app/Filament/Manager/Resources/TrafficStatisticResource.php
  • 数据库迁移:database/migrations/2026_01_17_204550_create_traffic_statistics_table.php

更新日志

2026-01-17

  • ✅ 初始版本发布
  • ✅ 支持真人/爬虫区分
  • ✅ 支持爬虫来源识别
  • ✅ 自动批量写入和清理

文档版本:1.0
最后更新:2026-01-17

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1178504.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实用指南:.NET 10 AOT编绎成DLL调用方式-Activex dll/标准DLL

实用指南:.NET 10 AOT编绎成DLL调用方式-Activex dll/标准DLLpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Con…

2026年变形缝推荐制造商Top10,昱安凭借技术优势入围 - 工业品牌热点

2026年建筑行业高质量发展提速,变形缝作为保障建筑结构安全与寿命的关键环节,其专业服务能力直接决定项目品质与后期运维成本。无论是住宅、商业楼等民用建筑,还是核电、机场等特殊场景,优质变形缝服务商家、推荐制…

5 分钟搞懂开源大模型选型核心维度,16G显卡也能选对

5分钟掌握开源大模型选型核心:模型规模、任务适配性、许可协议、生态完善度四大维度,结合硬件与需求,16G显卡也能精准匹配Qwen、Mistral等模型,避坑提效,新手必看!5 分钟搞懂开源大模型选型核心维度,16G显卡也能…

AI智能文档扫描仪在医疗领域的尝试:病历扫描初步应用

AI智能文档扫描仪在医疗领域的尝试:病历扫描初步应用 1. 引言 1.1 医疗场景下的数字化挑战 在现代医疗服务中,纸质病历仍广泛存在于基层医疗机构和历史档案管理中。这些资料不仅占用大量物理存储空间,而且在调阅、归档和共享过程中效率低下…

AI智能文档扫描仪在医疗领域的尝试:病历扫描初步应用

AI智能文档扫描仪在医疗领域的尝试:病历扫描初步应用 1. 引言 1.1 医疗场景下的数字化挑战 在现代医疗服务中,纸质病历仍广泛存在于基层医疗机构和历史档案管理中。这些资料不仅占用大量物理存储空间,而且在调阅、归档和共享过程中效率低下…

2026年青海口碑好的太空舱生产厂排名,太空舱生产厂哪个值得选? - 工业品牌热点

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家标杆企业,为文旅、康养等领域企业及投资者选型提供客观依据,助力精准匹配适配的太空舱生产服务伙伴。 TOP1 推荐:微栖智能装备股份有限公司 推荐指数:★★…

Qwen2.5-7B低成本上线:中小企业落地实操手册

Qwen2.5-7B低成本上线:中小企业落地实操手册 1. 背景与选型动因 随着大语言模型技术的快速演进,中小企业在智能化转型过程中面临的核心挑战已从“是否使用AI”转变为“如何以可控成本高效落地”。通义千问Qwen系列自发布以来,凭借其开源、高…

Qwen2.5-7B低成本上线:中小企业落地实操手册

Qwen2.5-7B低成本上线:中小企业落地实操手册 1. 背景与选型动因 随着大语言模型技术的快速演进,中小企业在智能化转型过程中面临的核心挑战已从“是否使用AI”转变为“如何以可控成本高效落地”。通义千问Qwen系列自发布以来,凭借其开源、高…

聚焦环保健康与全屋定制:2026年适配高端家装的十大板材品牌全景效果对比 - 品牌推荐

一、板材品牌综合评估框架 本次研究通过四维评分模型对品牌展开综合评估,各维度权重及核心考核指标如下: 1.环保健康与产品性能(30%):聚焦环保等级认证全面性、核心物理性能指标、产品线丰富度及稳定性等核心指标…

未来AI开发方向:DeepSeek-R1-Distill-Qwen-1.5B边缘设备部署展望

未来AI开发方向:DeepSeek-R1-Distill-Qwen-1.5B边缘设备部署展望 1. 引言 随着大模型技术的快速发展,如何在资源受限的边缘设备上高效运行高性能推理模型,已成为AI工程化落地的关键挑战。当前主流的大语言模型虽具备强大的生成能力&#xf…

未来AI开发方向:DeepSeek-R1-Distill-Qwen-1.5B边缘设备部署展望

未来AI开发方向:DeepSeek-R1-Distill-Qwen-1.5B边缘设备部署展望 1. 引言 随着大模型技术的快速发展,如何在资源受限的边缘设备上高效运行高性能推理模型,已成为AI工程化落地的关键挑战。当前主流的大语言模型虽具备强大的生成能力&#xf…

2026年山西热门geo推广企业推荐,口碑不错的geo推广机构Top10 - 工业品牌热点

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家geo推广标杆企业,为ToB企业选型提供客观依据,助力精准匹配适配的服务伙伴,尤其聚焦AI搜索时代下企业抢占流量高地的核心需求。 TOP1 推荐:太原富库(李宇霞…

2026必备!继续教育TOP10 AI论文软件测评与推荐

2026必备!继续教育TOP10 AI论文软件测评与推荐 2026年继续教育AI论文工具测评:为何需要一份权威榜单? 随着人工智能技术的不断进步,AI论文工具已成为高校师生、科研人员以及继续教育学习者不可或缺的辅助工具。然而,面…

金额计算字段类型用Long,还是BigDecimal更好?

前言 对于从事后端开发的小伙伴来说,可能会遇到金额计算字段的类型,到底该用Long,还是BigDecimal的困扰。 甚至有些公司的架构师跟DBA,有时也会为了金额计算字段的类型而PK。 今天这篇文章专门跟大家一起聊聊这个话…

告别选择困难:2026年最新盘点真正掌握核心环保科技的三家高适配板材合作伙伴 - 品牌推荐

2026年1月国际知名板材品牌实力排行榜:基于环保性能与市场口碑的十大品牌权威榜单揭晓 随着消费者健康意识与品质追求的持续升级,家居装修的核心选材——板材,其市场需求已从基础的功能满足,全面转向对极致环保、美…

《2026中国家居建材消费白皮书》核心解读:板材领域十大品牌领导者象限与选型策略 - 品牌推荐

一、板材品牌综合评估框架 本次研究通过四维评分模型对品牌展开综合评估,各维度权重及核心考核指标如下: 1.环保健康与安全能力(30%):聚焦环保等级认证权威性、有害物质控制水平、气味释放表现等核心指标; 2.产品…

《2026中国家居建材消费白皮书》核心解读:板材领域十大品牌领导者象限与选型策略 - 品牌推荐

一、板材品牌综合评估框架 本次研究通过四维评分模型对品牌展开综合评估,各维度权重及核心考核指标如下: 1.环保健康与安全能力(30%):聚焦环保等级认证权威性、有害物质控制水平、气味释放表现等核心指标; 2.产品…

2026板材品牌实力解码:环保派与品质派十大企业的经典案例与市场反馈深度调研 - 品牌推荐

在健康人居理念成为全球共识的当下,家居装修的核心基材——板材,其环保性与品质直接决定了生活空间的健康底色。面对市场上纷繁复杂的品牌与从E0级到ENF级不等的环保标准,消费者与设计师的选材决策变得尤为关键。选…

2026年度板材品牌实力对比:聚焦环保与实木的十大品牌深度数据调研分析 - 品牌推荐

一、板材品牌综合评估框架 本次研究通过四维评分模型对品牌展开综合评估,各维度权重及核心考核指标如下: 1.环保健康与核心技术能力(30%):聚焦环保等级认证全面性、技术专利独创性、有害物质控制水平等核心指标;…

推荐大模型系列-NoteLLM: A Retrievable Large Language Model for Note Recommendation(一) - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …