sierratecnologia / tracking
追踪
Requires
- php: ^7.4
- donatj/phpuseragentparser: *
- geoip2/geoip2: ^2.0
- guzzlehttp/guzzle: ^6.0 || ^7.0
- illuminate/bus: ^7.0 || ^8.0
- illuminate/console: ^7.0 || ^8.0
- illuminate/contracts: ^7.0 || ^8.0
- illuminate/database: ^7.0 || ^8.0
- illuminate/http: ^7.0 || ^8.0
- illuminate/queue: ^7.0 || ^8.0
- illuminate/routing: ^7.0 || ^8.0
- illuminate/support: ^7.0 || ^8.0
- jenssegers/agent: ^2.0
- laravel/horizon: ^4.0|^5.0
- phpmetrics/phpmetrics: *
- ricardosierra/larametrics: ^1.2.4
- sierratecnologia/audit: ^0.4.0
- sierratecnologia/countries: ^0.4.0
- sierratecnologia/muleta: ^0.4.0
- spatie/laravel-analytics: ^3.0
- symfony/http-foundation: >=4.3
- torann/geoip: ^1.0|^3.0
- ua-parser/uap-php: ^3.8
- wnx/laravel-stats: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- orchestra/testbench: ^5.0
- phpunit/phpunit: ^9.3
- psalm/plugin-laravel: ^1.2
- vimeo/psalm: ^3.11
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 的默认实现无需配置即可使用,这意味着安装后即可使用。但建议更改默认设置并从配置文件中禁用“追踪压榨彩票”,并用 计划任务 替换,以获得更好的性能(如果你有大量的访问量)。有关详细信息,请参阅使用方法。
安装
-
通过 composer 安装包
composer require sierratecnologia/tracking
-
发布资源(迁移和配置文件)
php artisan sierratecnologia:publish:trackings
-
执行以下命令进行迁移
php artisan sierratecnologia:migrate:trackings
-
完成!
使用方法
这部分很有趣!SierraTecnologia Tracking 没有使用说明,因为安装后它就会自动运行!你安装它就完成了!真的!
无论如何,作为推荐的性能调整,请执行以下操作(可选)
-
通过以下命令发布配置文件
php artisan sierratecnologia:publish:trackings
-
从配置文件中禁用“追踪压榨彩票”。
-
遵循默认的 Laravel 文档关于 计划任务 的说明,然后安排
\Tracking\Jobs\CrunchTracking
和\Tracking\Jobs\CleanTrackingRequests
任务的执行,间隔时间根据你的需求自行决定。 -
享受吧!
注意: 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_id
、user_id
和 user_type
,您可以跟踪访客(未登录)和用户(已登录),并提取符合您适当标准的唯一访问/访客。
备注
- 最后值得一提的是,这个包是一个数据仓库,它实际上并没有做很多可以对这样有价值的数据集进行的数学运算,所以如何利用它来满足您的目标取决于您的想象力。实现细节由您决定。
- 我们没有解释
trackings_data
表,因为它用于临时存储原始数据,直到它被包处理和压缩,所以您不应该关心或干扰这个表。它由包内部使用,没有真正的最终用户使用。\Tracking\Models\Tracking\Request
模型与所有相关数据有关联,如agent
、device
、path
、platform
和route
。因此,一旦您获取了一个请求实例,您可以像通常使用 Eloquent Relationships 一样访问它的任何关联:$trackingsRequest->agent->version
或$trackingsRequest->platform->family
。
变更日志
请参阅 变更日志 以获取项目的完整历史。
支持
以下支持渠道随时可用
贡献 & 协议
感谢您考虑为此项目做出贡献!贡献指南可在 CONTRIBUTING.md 中找到。
欢迎提交错误报告、功能请求和拉取请求。
安全漏洞
如果您在此项目中发现安全漏洞,请发送电子邮件至 help@sierratecnologia.com。所有安全漏洞都将得到及时处理。
关于 SierraTecnologia
SierraTecnologia 是一家软件解决方案初创公司,自 2016 年 6 月以来在埃及亚历山大市成立,专门为中小企业提供集成企业解决方案。我们相信,我们的驱动力是“价值、影响力和影响力”,这是我们与众不同的地方,通过软件的力量释放我们哲学的无限可能性。我们喜欢称之为“以生命速度的创新”。这就是我们为推动人类进步做出贡献的方式。
许可证
本软件根据 MIT 许可证 (MIT) 发布。
© 2016-2020 SierraTecnologia LLC,部分版权所有。