jrbecart/laravel-statistics

由 rinvex/laravel-statistics 分支而来,Rinvex 统计是一个轻量级但详细的包,用于跟踪和记录 Laravel 应用程序中的用户访问。每次请求只需一个简单的查询,重要数据就会被存储,稍后通过 cronjob 处理数据以提取有意义的存储。

6.3.0 2023-01-06 19:21 UTC

README

Rinvex 统计 是一个轻量级但详细的包,用于跟踪和记录 Laravel 应用程序中的用户访问。每次请求只需一个简单的查询,重要数据就会被存储,稍后通过 cronjob 处理数据以提取有意义的存储。

与其他严重损害项目性能的跟踪包不同(是的,我指的是那个你认识的包 😅),我们的包采取了不同的方法,仅在用户响应后执行每个请求结束时的一个查询,通过自动附加中间件的 terminate 方法,然后稍后使用先前插入数据库的原始数据提取有意义的数字。这是基于随机彩票请求或通过计划任务(推荐)进行的,可以将重压处理工作排队。

Rinvex 统计 跟踪每个有效的请求,这意味着只有通过路由管道的路由请求,这也意味着任何导致 NotFoundHttpException 的错误 URL 都不会跟踪。如果请求的页面有未捕获的异常,它也不会被跟踪。它跟踪用户的登录账户(如果有),所有用户和访客的会话(如果有),设备(系列、型号、品牌),平台(系列、版本),浏览器(代理、类型、系列、版本),路径,路由(操作、中间件、参数),主机、协议、IP 地址、语言、状态码等,而且我们还有许多计划在未来实现的功能。

由于收集了如此大量的数据,statistics_requests 数据库表的大小会明显增加,尤其是如果你有很多访问量,因此建议定期清理。其他重要数据将保留在其各自的表中,规范化且没有性能问题,因此只需清理此表。默认情况下,每月会自动执行此操作。

Rinvex 统计 的默认实现无需配置即可直接使用,这意味着安装后即可使用。但建议更改默认设置并从配置文件中禁用“统计 crunching 彩票”,并将其替换为计划任务,以获得更好的性能(如果你有大量的访问量)。有关详细信息,请参阅使用

Packagist Scrutinizer Code Quality Travis StyleCI License

安装

  1. 通过 composer 安装包

    composer require rinvex/laravel-statistics
  2. 发布资源(迁移和配置文件)

    php artisan rinvex:publish:statistics
  3. 使用以下命令执行迁移

    php artisan rinvex:migrate:statistics
  4. 完成!

使用方法

好吧,这是有趣的部分!Rinvex 统计 没有使用说明,因为它就是那么工作!你安装它,然后你就完成了!真的!!

无论如何,作为推荐的性能调整,请按照以下步骤操作(可选)

  1. 使用以下命令发布配置文件

    php artisan rinvex:publish:statistics
    
  2. 从配置文件中禁用“统计 crunching 彩票”。

  3. 遵循 Laravel 有关 计划任务 的默认文档,然后计划 \Rinvex\Statistics\Jobs\CrunchStatistics\Rinvex\Statistics\Jobs\CleanStatisticsRequests 作业,无论你认为什么间隔都合适。

  4. 享受!

注意: Rinvex 统计 包含一个 \Rinvex\Statistics\Http\Middleware\TrackStatistics 中间件,它会自动附加到 web 中间件组,这就是它无需配置即可开箱即用的原因。

数据检索

您可能需要构建自己的前端界面来浏览统计数据,为此,您可以像使用 Laravel Eloquent 一样使用所有包含的 eloquent 模型。

所有 eloquent 模型都是自我解释的

  • \Rinvex\Statistics\Models\Agent 浏览器代理模型
  • \Rinvex\Statistics\Models\Datum 原始统计数据(需要处理)
  • \Rinvex\Statistics\Models\Device 用户设备模型
  • \Rinvex\Statistics\Models\Path 请求路径模型
  • \Rinvex\Statistics\Models\Platform 用户平台模型
  • \Rinvex\Statistics\Models\Request 请求数据模型(需要定期清理)
  • \Rinvex\Statistics\Models\Route 请求路由详情模型

所有模型都绑定到 服务容器,因此您可以从应用程序的任何位置轻松地进行交换。除了默认的显式使用这些模型的方式之外,您还可以像以下示例中那样使用它们的相应服务名称

// Find first browser agent (any of these methods are valid and equivalent)
app('rinvex.statistics.agent')->first();
new \Rinvex\Statistics\Models\Agent::first();
app(\Rinvex\Statistics\Contracts\AgentContract::class)->first();

所有其他 eloquent 模型也是如此。

重要的计数

所有代理、设备、路径、平台、路由模型都有一个 count 属性,每次跟踪到新的请求时都会自动更新。

这个 count 属性反映的是点击次数。为了清楚起见,让我们通过数据样本进行解释

代理

这意味着有 734 次访问我们的项目是通过 Chrome 浏览器,版本 63.0.3239,代理 (Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36)

设备

这意味着有 83 次访问我们的项目是通过 iPhone 设备。

平台

这意味着有 615 次访问我们的项目是通过 Mac OS X 操作系统,版本 10.12.6

路径

这意味着有 12 次访问 test.homestead.local 主机的管理员仪表板角色管理(如果你在同一项目上启用了多个主机或通配符子域名,你可以在这里正确跟踪所有这些)。使用了英文界面,访问的路径有两个参数,一个用于地区(在这种情况下是英文),另一个用于更新角色记录(在这种情况下是管理员)。

这个表格可以用作所有页面的访问计数器。例如,要检索和显示页面浏览量,您可以使用以下代码

$pageViews = app('rinvex.statistics.path')->where('path', request()->decodedPath())->first()->count;

您只需在任何视图或控制器中,或任何其他地方简单地使用 $pageViews 变量。这样,您就有了一个为所有项目页面自动计数的访问计数器,非常实用且性能优良,随时可用。如果您启用了通配符子域名,可以添加 host 约束。

路由

这意味着有 41 次访问 adminarea.roles.edit 路由,该路由的原始路径为 {locale}/adminarea/roles/{role},通过 App\Http\Controllers\Adminarea\RolesController@form 控制器动作提供服务,并应用以下中间件 ["web","nohttpcache","can:access-adminarea","auth","can:update-roles,roles"],知道该路由接受两个参数,其正则表达式要求如下 {"role": "[a-z0-9-]+", "locale": "[a-z]{2}"}

如您所见,此 statistics_routes 表与 statistics_paths 表是互补的,可以一起使用来跟踪哪些路径和路由被访问,访问了多少次,以及提供它的控制器动作是什么,需要哪些参数,以及用于访问它的实际参数替换。

Geoips

这意味着从IP地址127.0.0.0访问了项目57次,上述提及的纬度、经度和时区均来自康涅狄格州的纽黑文市。

请求

这是一个最全面的表格,记录了项目收到的每一个请求,访问细节与上面示例中所示相同。通过session_iduser_iduser_type,您可以追踪访客(未登录)和用户(已登录),并按照您认为合适的标准提取独特的访问/访客。

注意

  • 最后要说明的是,这个包是一个数据宝库,它实际上并没有做很多可以在这份数据上进行的数学运算,因此如何利用它取决于您的想象力,以实现您的目标。实现细节由您自行决定。
  • 我们没有解释statistics_data表,因为它用于临时存储原始数据,直到它被包处理和压缩,所以您不应该关心或干涉这个表。它是包内部使用的,没有真正的最终用户用途。
  • \Rinvex\Statistics\Models\Request模型与所有相关数据(如agentdevicepathplatformroute)有关联。因此,一旦获取请求实例,您可以像通常使用Eloquent Relationships那样访问其任何关系:例如$statisticsRequest->agent->version$statisticsRequest->platform->family

变更日志

请参阅变更日志以了解项目的完整历史。

支持

以下支持渠道触手可及

贡献和协议

感谢您考虑为这个项目做出贡献!贡献指南可以在CONTRIBUTING.md中找到。

非常欢迎报告错误、功能请求和拉取请求。

安全漏洞

如果您在此项目中发现安全漏洞,请发送电子邮件至help@rinvex.com。所有安全漏洞都将得到及时处理。

关于Rinvex

Rinvex是一家成立于2016年6月的亚历山大,埃及的软件解决方案初创公司,专注于为中小企业提供集成企业解决方案。我们相信,我们的动力在于价值、影响力和影响力,这是区分我们的因素,并通过软件的力量释放我们哲学的无限可能性。我们喜欢称之为“生活速度的创新”。这就是我们为推动人类进步所做的贡献。

许可

本软件在MIT许可证(MIT)下发布。

© 2016-2021 Rinvex LLC,部分版权所有。