0.4.0 2020-10-05 07:07 UTC

This package is auto-updated.

Last update: 2024-09-20 17:10:43 UTC


README

SierraTecnologia Tracking

SierraTecnologia Tracking 是一个轻量级但详细的追踪和记录用户访问Laravel应用程序的包。只需每个请求一个简单查询,就能存储重要数据,随后通过cronjob将数据整理,从大量数据中提取有意义的见解。

与其他严重损害项目性能的追踪包不同(是的,我指的是你熟知的那个包 😅),我们的包采用不同的方法,在每个请求响应用户后只执行一次查询,通过自动附加中间件的 terminate 方法完成,然后使用之前插入数据库的原始数据提取有意义的数据。这是基于随机抽奖请求或通过计划任务(推荐)来执行,可以将大量计算工作移至后台处理。

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

由于收集了如此大量的数据,trackings_requests 数据库表的大小会明显增加,特别是如果你有很多访问量,这就是为什么建议定期清理它。其他重要数据仍然保留在其各自的表中,规范化且没有性能问题,因此只需要清理这个表。默认情况下,这每个月会自动执行一次。

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

Packagist Scrutinizer Code Quality Travis StyleCI License

安装

  1. 通过 composer 安装包

    composer require sierratecnologia/tracking
  2. 发布资源(迁移和配置文件)

    php artisan sierratecnologia:publish:trackings
  3. 执行以下命令进行迁移

    php artisan sierratecnologia:migrate:trackings
  4. 完成!

使用方法

这部分很有趣!SierraTecnologia Tracking 没有使用说明,因为安装后它就会自动运行!你安装它就完成了!真的!

无论如何,作为推荐的性能调整,请执行以下操作(可选)

  1. 通过以下命令发布配置文件

    php artisan sierratecnologia:publish:trackings
    
  2. 从配置文件中禁用“追踪压榨彩票”。

  3. 遵循默认的 Laravel 文档关于 计划任务 的说明,然后安排 \Tracking\Jobs\CrunchTracking\Tracking\Jobs\CleanTrackingRequests 任务的执行,间隔时间根据你的需求自行决定。

  4. 享受吧!

注意: SierraTecnologia 跟踪 拥有一个 \Tracking\Http\Middleware\TrackTracking 中间件,它会自动附加到 web 中间件组,这就是它默认情况下无需配置即可工作的原因。

数据检索

您可能需要构建自己的前端界面来浏览跟踪信息,为此,您可以使用任何包含的 eloquent 模型,就像您通常使用 Laravel Eloquent 一样。

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

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

所有模型都绑定到 服务容器,因此您可以在应用程序的任何地方轻松交换。除了默认的正常方式外,您还可以使用以下示例中的相应服务名称显式使用这些模型

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

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

重要的计数

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

count 属性反映了访问次数。为了更清晰地说明,让我们通过数据样本来解释

代理

这意味着通过 Chrome 浏览器访问我们的项目有 734 次访问,版本 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

设备

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

平台

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

路径

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

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

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

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

路由

这意味着访问了 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}"}

正如您所看到的,这个位于 trackings_paths 表旁边的 trackings_routes 表是相互补充的,可以一起使用来跟踪哪些路径和路由被访问,访问了多少次,以及哪些控制器动作提供服务,以及需要什么参数,以及实际使用的参数替换。将路由视为您的原始链接蓝图图,将路径视为用户实际执行的链接。

Geoips

这意味着来自上述提到的纬度、经度和时区的 New Haven 市和 Connecticut 州的 IP 地址 127.0.0.0 访问了项目 57 次。

请求

这是一个最全面的表格,记录了向项目发出的每个请求,以及上面示例中看到的访问详情。通过 session_iduser_iduser_type,您可以跟踪访客(未登录)和用户(已登录),并提取符合您适当标准的唯一访问/访客。

备注

  • 最后值得一提的是,这个包是一个数据仓库,它实际上并没有做很多可以对这样有价值的数据集进行的数学运算,所以如何利用它来满足您的目标取决于您的想象力。实现细节由您决定。
  • 我们没有解释 trackings_data 表,因为它用于临时存储原始数据,直到它被包处理和压缩,所以您不应该关心或干扰这个表。它由包内部使用,没有真正的最终用户使用。
  • \Tracking\Models\Tracking\Request 模型与所有相关数据有关联,如 agentdevicepathplatformroute。因此,一旦您获取了一个请求实例,您可以像通常使用 Eloquent Relationships 一样访问它的任何关联:$trackingsRequest->agent->version$trackingsRequest->platform->family

变更日志

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

支持

以下支持渠道随时可用

贡献 & 协议

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

欢迎提交错误报告、功能请求和拉取请求。

安全漏洞

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

关于 SierraTecnologia

SierraTecnologia 是一家软件解决方案初创公司,自 2016 年 6 月以来在埃及亚历山大市成立,专门为中小企业提供集成企业解决方案。我们相信,我们的驱动力是“价值、影响力和影响力”,这是我们与众不同的地方,通过软件的力量释放我们哲学的无限可能性。我们喜欢称之为“以生命速度的创新”。这就是我们为推动人类进步做出贡献的方式。

许可证

本软件根据 MIT 许可证 (MIT) 发布。

© 2016-2020 SierraTecnologia LLC,部分版权所有。