andreaselia / analytics
Laravel 框架的统计分析。
Requires
- php: ^7.4|^8.0
- ext-intl: *
- doctrine/dbal: ^3.0
- illuminate/collections: ^8.0|^9.0|^10.0|^11.0
- illuminate/database: ^8.0|^9.0|^10.0|^11.0
- illuminate/http: ^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
- illuminate/view: ^8.0|^9.0|^10.0|^11.0
- jaybizzle/crawler-detect: ^1.2
- jenssegers/agent: ^2.6
- mobiledetect/mobiledetectlib: ^2.7.6
Requires (Dev)
- orchestra/testbench: 6.0|^9.0
- phpunit/phpunit: ^9.5|^11.0
This package is auto-updated.
Last update: 2024-08-30 19:07:55 UTC
README
轻松收集页面浏览分析,使用简单美观的控制面板。
安装
安装包
composer require andreaselia/analytics
发布配置文件和资源
php artisan vendor:publish --provider="AndreasElia\Analytics\AnalyticsServiceProvider"
别忘了运行迁移
php artisan migrate
您可以将页面浏览中间件添加到特定的路由组,例如 web.php
如下所示
Route::middleware('analytics')->group(function () { // ... });
或者将页面浏览添加到所有中间件/在应用程序级别上,如下所示
// app/Http/Kernel.php protected $middleware = [ // ... \AndreasElia\Analytics\Http\Middleware\Analytics::class, ];
配置
禁用跟踪
您可以通过设置环境变量 ANALYTICS_ENABLED
或配置文件中的 enabled
属性为 false
来禁用跟踪。
排除路由
您可以通过将它们添加到配置文件中的 exclude
数组来排除某些路由的跟踪。
忽略机器人
您可以通过设置配置文件中的 ignoreRobots
属性来忽略来自机器人的请求。
忽略特定 IP 地址
您可以通过将它们添加到配置文件中的 ignoreIps
数组来忽略来自特定 IP 地址的请求。
掩码路由
您可以通过将它们添加到配置文件中的 mask
数组来掩码某些路由的跟踪。如果您想跟踪具有不同参数的相同路由,例如 /users/1
和 /users/2
将被跟踪为 /users/∗︎
。
忽略特定的 HTTP 动词/方法
您可以通过将它们添加到配置选项中的 analytics.ignoreMethods
来忽略某些方法的跟踪。例如,如果您不想跟踪 POST
请求,可以按如下配置
'ignoreMethods' => [ 'POST', ],
更改确定 session_id 的方式
默认情况下,page_views
表中的 session_id
被填充为当前请求的会话 ID。然而,在特定情况下(例如,对于不使用 Cookie 的 API 和其他请求),会话不可用。
在这些情况下,您可以创建一个自定义会话 ID 提供器:创建一个实现 AndreasElia\Analytics\Contracts\SessionProvider
接口的类,并将其名称设置为配置文件中的 provider
选项。配置的类对象从容器中解析,因此可以通过 __constructor
使用依赖注入。
在无 Cookie 环境中生成会话 ID 的自定义方法的一个例子是散列 IP 地址 + 用户代理 + 请求的一些其他头部。
您可以查看 AndreasElia\Analytics\RequestSessionProvider
以获取实现 SessionProvider
接口的示例。
更改确定 "今天" 和 "昨天" 的时间区域的方式
由于时间戳是使用您的应用程序的时间区域存储的,因此您可能会根据您检查 "今天" 和 "昨天" 视图的时间和您实际的时间区域得到不同的结果。您可以通过在服务提供程序中设置回调来更改 "现在" 的相对时间。
use AndreasElia\Analytics\Models\PageView; public function boot() { PageView::resolveTimezoneUsing(function () { return request()->user()?->timezone; }); }
您可以返回上述示例中的动态值,或静态值。如果没有确定,它将回退到 config('app.timezone')
的值。
Laravel Nova
该包附带 Laravel Nova 的仪表板和度量。
仪表板
您可以将仪表板添加到Laravel Nova中,通过在您的NovaServiceProvider
中的dashboards
数组中添加new \AndreasElia\Analytics\Nova\Dashboards\Analytics
。
protected function dashboards(): array { return [ new \AndreasElia\Analytics\Nova\Dashboards\Analytics, ]; }
指标
或者,您也可以通过在仪表板文件中的cards
数组中添加它们来将指标添加到您自己的Laravel Nova仪表板中。
protected function cards(): array { return [ new \AndreasElia\Analytics\Nova\Metrics\Devices, new \AndreasElia\Analytics\Nova\Metrics\PageViews, new \AndreasElia\Analytics\Nova\Metrics\UniqueUsers, ]; }
贡献
您随时可以提交一个拉取请求,或者如果您不想这么做,可以创建一个问题,以便其他人可以继续处理。