jrbecart / laravel-statistics
由 rinvex/laravel-statistics 分支而来,Rinvex 统计是一个轻量级但详细的包,用于跟踪和记录 Laravel 应用程序中的用户访问。每次请求只需一个简单的查询,重要数据就会被存储,稍后通过 cronjob 处理数据以提取有意义的存储。
Requires
- php: ^7.4.0 || ^8.0.0
- geoip2/geoip2: ^2.11.0
- illuminate/bus: ^7.0.0 || ^8.0.0 || ^9.0.0
- illuminate/console: ^7.0.0 || ^8.0.0 || ^9.0.0
- illuminate/contracts: ^7.0.0 || ^8.0.0 || ^9.0.0
- illuminate/database: ^7.0.0 || ^8.0.0 || ^9.0.0
- illuminate/http: ^7.0.0 || ^8.0.0 || ^9.0.0
- illuminate/queue: ^7.0.0 || ^8.0.0 || ^9.0.0
- illuminate/routing: ^7.0.0 || ^8.0.0 || ^9.0.0
- illuminate/support: ^7.0.0 || ^8.0.0 || ^9.0.0
- jenssegers/agent: ^2.6.0
- rinvex/countries: ^7.0.0
- rinvex/laravel-support: ^6.1.0
- symfony/http-foundation: ^6.0.0
- torann/geoip: ^3.0.0
- ua-parser/uap-php: ^3.8.0
Requires (Dev)
- codedungeon/phpunit-result-printer: ^0.30.0
- illuminate/container: ^7.0.0
- phpunit/phpunit: ^9.0.0
This package is not auto-updated.
Last update: 2024-09-28 03:26:31 UTC
README
Rinvex 统计 是一个轻量级但详细的包,用于跟踪和记录 Laravel 应用程序中的用户访问。每次请求只需一个简单的查询,重要数据就会被存储,稍后通过 cronjob 处理数据以提取有意义的存储。
与其他严重损害项目性能的跟踪包不同(是的,我指的是那个你认识的包 😅),我们的包采取了不同的方法,仅在用户响应后执行每个请求结束时的一个查询,通过自动附加中间件的 terminate
方法,然后稍后使用先前插入数据库的原始数据提取有意义的数字。这是基于随机彩票请求或通过计划任务(推荐)进行的,可以将重压处理工作排队。
Rinvex 统计 跟踪每个有效的请求,这意味着只有通过路由管道的路由请求,这也意味着任何导致 NotFoundHttpException
的错误 URL 都不会跟踪。如果请求的页面有未捕获的异常,它也不会被跟踪。它跟踪用户的登录账户(如果有),所有用户和访客的会话(如果有),设备(系列、型号、品牌),平台(系列、版本),浏览器(代理、类型、系列、版本),路径,路由(操作、中间件、参数),主机、协议、IP 地址、语言、状态码等,而且我们还有许多计划在未来实现的功能。
由于收集了如此大量的数据,statistics_requests
数据库表的大小会明显增加,尤其是如果你有很多访问量,因此建议定期清理。其他重要数据将保留在其各自的表中,规范化且没有性能问题,因此只需清理此表。默认情况下,每月会自动执行此操作。
Rinvex 统计 的默认实现无需配置即可直接使用,这意味着安装后即可使用。但建议更改默认设置并从配置文件中禁用“统计 crunching 彩票”,并将其替换为计划任务,以获得更好的性能(如果你有大量的访问量)。有关详细信息,请参阅使用。
安装
-
通过 composer 安装包
composer require rinvex/laravel-statistics
-
发布资源(迁移和配置文件)
php artisan rinvex:publish:statistics
-
使用以下命令执行迁移
php artisan rinvex:migrate:statistics
-
完成!
使用方法
好吧,这是有趣的部分!Rinvex 统计 没有使用说明,因为它就是那么工作!你安装它,然后你就完成了!真的!!
无论如何,作为推荐的性能调整,请按照以下步骤操作(可选)
-
使用以下命令发布配置文件
php artisan rinvex:publish:statistics
-
从配置文件中禁用“统计 crunching 彩票”。
-
遵循 Laravel 有关 计划任务 的默认文档,然后计划
\Rinvex\Statistics\Jobs\CrunchStatistics
和\Rinvex\Statistics\Jobs\CleanStatisticsRequests
作业,无论你认为什么间隔都合适。 -
享受!
注意: 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_id
、user_id
和user_type
,您可以追踪访客(未登录)和用户(已登录),并按照您认为合适的标准提取独特的访问/访客。
注意
- 最后要说明的是,这个包是一个数据宝库,它实际上并没有做很多可以在这份数据上进行的数学运算,因此如何利用它取决于您的想象力,以实现您的目标。实现细节由您自行决定。
- 我们没有解释
statistics_data
表,因为它用于临时存储原始数据,直到它被包处理和压缩,所以您不应该关心或干涉这个表。它是包内部使用的,没有真正的最终用户用途。\Rinvex\Statistics\Models\Request
模型与所有相关数据(如agent
、device
、path
、platform
和route
)有关联。因此,一旦获取请求实例,您可以像通常使用Eloquent Relationships那样访问其任何关系:例如$statisticsRequest->agent->version
或$statisticsRequest->platform->family
。
变更日志
请参阅变更日志以了解项目的完整历史。
支持
以下支持渠道触手可及
贡献和协议
感谢您考虑为这个项目做出贡献!贡献指南可以在CONTRIBUTING.md中找到。
非常欢迎报告错误、功能请求和拉取请求。
安全漏洞
如果您在此项目中发现安全漏洞,请发送电子邮件至help@rinvex.com。所有安全漏洞都将得到及时处理。
关于Rinvex
Rinvex是一家成立于2016年6月的亚历山大,埃及的软件解决方案初创公司,专注于为中小企业提供集成企业解决方案。我们相信,我们的动力在于价值、影响力和影响力,这是区分我们的因素,并通过软件的力量释放我们哲学的无限可能性。我们喜欢称之为“生活速度的创新”。这就是我们为推动人类进步所做的贡献。
许可
本软件在MIT许可证(MIT)下发布。
© 2016-2021 Rinvex LLC,部分版权所有。