jakeydevs/analytics

Laravel 的自托管分析系统

v0.2.2 2020-10-21 09:45 UTC

This package is auto-updated.

Last update: 2024-09-21 18:08:42 UTC


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,设计如下。

1

您可以使用以下标签使用这些组件:

@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