jakeydevs / analytics
Laravel 的自托管分析系统
Requires
- php: >=7.2
- geoip2/geoip2: ^2.11
- whichbrowser/parser: ^2.0
Requires (Dev)
- orchestra/testbench: ^6.2
- phpunit/phpunit: ^9.4
README
Analytics 是一个简单的 Laravel 网站分析包,它提供了足够的数据以满足实用需求,同时避免了与其他托管网络分析工具共享数据、第三方服务的疯狂行为。
此插件正在由 https://www.twitch.tv/jakeydev 通过 Twitch 进行积极开发。
安装
基于 Laravel 8 的系统。在版本 8 以下未进行测试。
$ composer require jakeydevs/analytics
安装完成后,运行迁移以允许系统记录页面访问!要编辑包的配置,您可以发布配置文件进行编辑
php artisan vendor:publish --provider="Jakeydevs\Analytics\AnalyticServiceProvider" --tag="config"
记录页面访问
已记录的页面访问
要记录页面访问,您需要将特定的中间件添加到您的路由中。当运行此中间件时,它将保存每个页面访问到系统中。该中间件的名称为 pageview
。
为了将所有页面访问保存到系统中,请将中间件设置为在运行 Web 路由时运行。最佳做法是在 RouteServiceProvider 上设置中间件
app\Providers\RouteServiceProvider.php
Route::middleware(['web', 'pageview']) ->namespace($this->namespace) ->group(base_path('routes/web.php'));
提供的方法
日期
应将日期作为 Period
传递给分析模型。例如:
Period::days(7) //-- Gets the last 7 days Period::days(0) //-- Gets today Period::create(now(), now()->subMinutes(10)) //-- Gets last 10 minutes
您还可以通过使用比较方法获取一组日期与您的周期进行比较 - 这对于提供结果背景非常有用。例如:
$period = Period::days(7); $compare = Period::compare($period); //-- Gets the 7 days before that $period = Period::days(0); $compare = Period::compare($period); //-- Gets yesterdays data
分析方法
您可以使用这些方法获取页面访问、唯一会话、跳出率或会话的平均持续时间(以秒为单位)。
Jakeydevs\Analytics\Analytics::getPageviews(Period $period): int Jakeydevs\Analytics\Analytics::getUnique(Period $period): int Jakeydevs\Analytics\Analytics::getBounceRate(Period $period): float Jakeydevs\Analytics\Analytics::getDuration(Period $period): int
您还可以获取任何解析数据的聚合信息(浏览器、操作系统、设备、位置、路径)。
Jakeydevs\Analytics\Analytics::getDataAggregate(Period $period, string $column): array
返回的数据是一个数组,其中列和会话按高到低排序。
视图组件
该系统自带了几个用于处理数据的 视图组件。它们基于 Tailwind,设计如下。
您可以使用以下标签使用这些组件:
@php $p = Period::days(7); @endphp <!-- Blade file --> <x-analytics-uniques :p="$p"/> <x-analytics-views :p="$p"/> <x-analytics-bounce :p="$p"/> <x-analytics-duration :p="$p"/>
常见问题解答
这是否符合 GDPR 规定? 我想应该是的?我不是律师 - 如果您也不是,如果您对 GDPR 感到担忧,您应该完全咨询律师。
这在 SPA 上是否工作? 目前不行,因为它只会在页面请求时记录页面访问。
贡献
欢迎贡献 - 请发送拉取请求。当项目成熟时,我们将添加更多详细的贡献指南!
此存储库是 Hacktoberfest 2020 的一部分,非常适合初学者!如果您需要帮助,请加入我每周二和周五下午 1 点至 4 点(GMT)的直播!
功能
请随时为以下任何已勾选的内容添加拉取请求 - 或者请在问题中提出新的功能。
✅ 记录页面访问(中间件)✅ 从系统中获取数据 ✅ 解析配置 ❌ 手动记录页面访问(用于 SPA)❌ 基本分析视图组件 ❌ 测试 ❌ 如何添加自己的数据解析器 ❌ 示例仪表板
许可
MIT