tallesairan / laravel-plausible
用于与 plausible 分析 API 交互的 Laravel 扩展包。
Requires
- php: ^8.1 | ^8.2
- guzzlehttp/guzzle: ^7.5
- illuminate/contracts: ^10.0
- illuminate/support: ^10.0
- sammyjo20/saloon-cache-plugin: ^2.0
- sammyjo20/saloon-laravel: ^2.0
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
README
此包最初由 @njoguamos 创建 - njoguamos/laravel-plausible
我必须进行这种适配,因为原始项目只支持 Plausible.io,不支持自托管分析,我进行了一些更改,使得 plausible 的基本地址可以通过配置和方法进行操作,这样我们就可以在一个 Apis 系统中管理多个自托管的 Plausible。
Plausible 是直观、轻量级且开源的网站分析。Plausible 没有cookies,完全符合 GDPR、CCPA 和 PECR。
Plausible 自托管文档 Plausible 分析是为通过 Docker 自托管而设计的。您不需要是 Docker 专家就可以启动自己的 Plausible 分析实例。您应该对命令行和网络有基本了解,以便成功设置自己的 Plausible 分析实例。
安装
您可以通过 composer 安装此包
composer require tallesairan/laravel-plausible
您可以使用以下命令初始化包
php artisan plausible:install
安装命令将发布 配置文件。
请确保您已经更新了应用程序 .env 文件,并包含来自 Plausible 的凭据,即
#.env file BASE_URL=https://your-self-hosted-address.io PLAUSIBLE_SITE_ID= PLAUSIBLE_API_KEY=
可选的 baseUrl 或 siteId 通过外观
开发这些方法以帮助远程管理多个自托管的 plausible
默认的基础 URL 为 "https://#",以确保操作时 URL 末尾没有斜杠
use Airan\Plausible\Facades\Plausible; Plausible::setBaseUrl('https://your-self-hosted-address.io'); Plausible::setSiteId('newera.com'); Plausible::setApiKey('eg-nw88131238128jj9213u1h3h1hh13h2h31200x1h5hh5') /** * Practical example */ # Let's assume that the Site Model has a belongs to many relationship with a model called Plausible $sites = Site:with('plausible')->get(); foreach ($sites as $site){ Plausible::setBaseUrl($site->plausible->base_url); // eg https://stats.newera.com Plausible::setApiKey($site->plausible->api_key); // set default api key Plausible::setSiteId($site->plausible_slug); // eg newera.com $visitors = Plausible::realtime(); $aggregates = Plausible::aggregates(); ... }
用法
1. 获取实时访客
要获取您默认站点的当前访客,请运行以下请求。
use Airan\Plausible\Facades\Plausible; $visitors = Plausible::realtime();
响应为一个单个数字
12
如果您喜欢使用外观,则可以这样做。
use Airan\Plausible\Facades\Plausible; $all = Plausible::aggregates();
2. 获取聚合数据
要获取聚合数据,请运行以下请求。
use Airan\Plausible\Facades\Plausible; // Simple with default $aggregates = Plausible::aggregates(); // Or with optional custom parameters $aggregates = Plausible::aggregates( period: 'custom', metrics: ['visitors', 'visits', 'pageviews'], filters: ['event:page==/blog**', 'visit:country==KE'], date: '2023-01-01,2023-01-31' );
成功的响应将是一个 json。示例;
{
"bounce_rate": {
"change": 4,
"value": 71
},
"events": {
"change": -24,
"value": 1166
},
"pageviews": {
"change": -24,
"value": 1166
},
"views_per_visit": {
"change": -26,
"value": 3
},
"visit_duration": {
"change": -37,
"value": 132
},
"visitors": {
"change": 1,
"value": 360
},
"visits": {
"change": 3,
"value": 389
}
}
聚合参数说明 展开以查看更多详细信息。
Period - 字符串,可选
use Airan\Plausible\Facades\Plausible; $aggregates = Plausible::aggregates(period: '7d')
period 必须是以下允许值之一,即 12mo、6mo、month、0d、7d、day 或 custom。如果未提供,则默认为 30d;
Metrics - 数组,可选
use Airan\Plausible\Facades\Plausible; $aggregates = Plausible::aggregates(metrics: ['visitors', 'visits'])
metrics 必须包含以下允许值之一,即 visitors、visits、pageviews、views_per_visit、bounce_rate、visit_duration 或 events。如果未提供,则包含所有指标。
Compare - 布尔值,可选
use Airan\Plausible\Facades\Plausible; $aggregates = Plausible::aggregates(compare: false )
compare 默认为 true,表示将计算每个指标与上一个时期的百分比差异。
Filters - 数组,可选
use Airan\Plausible\Facades\Plausible; $aggregates = Plausible::aggregates(filters: ['event:page==/blog**', 'visit:country==KE|DE'])
您的过滤器必须根据 plausible 指令 正确形成。默认为 null。
Date - 字符串,可选
use Airan\Plausible\Facades\Plausible; $aggregates = Plausible::aggregates(period: 'custom', date: '2023-01-01,2023-01-31')
日期格式为 Y-m-d。单个日期,例如 2023-01-04 或范围 2023-01-01,2023-01-31。如果未提供,则日期默认为 当前日期。
信息 当您提供日期范围时,必须包含
period: 'custom'。
3. 获取时间序列数据
要获取特定时间段的时间序列数据,请按以下方式运行请求。
use Airan\Plausible\Facades\Plausible; // Simple with default $aggregates = Plausible::timeSeries(); // Or with optional custom parameters $aggregates = Plausible::timeSeries( period: 'custom', metrics: ['visitors', 'visits', 'pageviews', 'views_per_visit', 'bounce_rate', 'visit_duration'], filters: ['event:page==/blog**'], interval: 'month', date: '2023-01-01,2023-01-31' );
成功的响应将是一个 json。示例;
[
{
"bounce_rate": 17,
"date": "2023-01-01",
"pageviews": 60,
"views_per_visit": 19,
"visit_duration": 525,
"visitors": 6,
"visits": 6
},
{
"bounce_rate": 12,
"date": "2023-01-02",
"pageviews": 22,
"views_per_visit": 4,
"visit_duration": 149,
"visitors": 6,
"visits": 8
},
{
"bounce_rate": 57,
"date": "2023-01-03",
"pageviews": 9,
"views_per_visit": 2.57,
"visit_duration": 48,
"visitors": 7,
"visits": 7
},
{
"bounce_rate": 71,
"date": "2023-01-04",
"pageviews": 48,
"views_per_visit": 8.43,
"visit_duration": 301,
"visitors": 7,
"visits": 7
}
]
时间序列参数说明 展开以查看更多细节。
Period - 字符串,可选
use Airan\Plausible\Facades\Plausible; $aggregates = Plausible::timeSeries(period: '6mo')
period 必须是以下允许值之一,即 12mo、6mo、month、0d、7d、day 或 custom。如果未提供,则默认为 30d;
Metrics - 数组,可选
use Airan\Plausible\Facades\Plausible; $aggregates = Plausible::timeSeries(metrics: ['visits', 'pageviews', 'views_per_visit'])
metrics 必须包含以下允许值之一,即 visitors、visits、pageviews、views_per_visit、bounce_rate、visit_duration 或 events。如果未提供,则包含所有指标。
Filters - 数组,可选
use Airan\Plausible\Facades\Plausible; $aggregates = Plausible::timeSeries(filters: ['event:page==/blog**', 'visit:browser==Firefox'])
您的过滤器必须根据 plausible 指令 正确形成。默认为 null。
间隔 - 字符串,可选
use Airan\Plausible\Facades\Plausible; $aggregates = Plausible::timeSeries(interval: 'month')
间隔只能是 month 或 date。如果未提供,则默认为 date。
Date - 字符串,可选
use Airan\Plausible\Facades\Plausible; $aggregates = Plausible::timeSeries(period: 'custom', date: '2023-01-01,2023-01-31')
日期格式为 Y-m-d。单个日期,例如 2023-01-04 或范围 2023-01-01,2023-01-31。如果未提供,则日期默认为 当前日期。
信息 当您提供日期范围时,必须包含
period: 'custom'。
4. 获取细分数据
要获取按某些属性统计的细分数据,请按以下方式运行请求。
use \Airan\Plausible\Facades\Plausible; // Simple with defaults $visitors = Plausible::breakdown(); // With optional parameters $aggregates = Plausible::breakdown( property: 'event:page', period: '12mo', metrics: ['visitors', 'visits', 'pageviews'], filters: 'event:page==/blog**', limit: 500 );
响应为一个单个数字
[
{
"bounce_rate": 71,
"page": "/",
"pageviews": 146,
"visit_duration": 126,
"visitors": 87,
"visits": 77
},
{
"bounce_rate": 54,
"page": "/articles",
"pageviews": 179,
"visit_duration": 206,
"visitors": 71,
"visits": 50
},
{
"bounce_rate": 81,
"page": "/blog/about-laravel-plausible",
"pageviews": 42,
"visit_duration": 27,
"visitors": 35,
"visits": 37
},
{
"bounce_rate": 52,
"page": "/pricing",
"pageviews": 72,
"visit_duration": 147,
"visitors": 31,
"visits": 27
},
{
"bounce_rate": 76,
"page": "/aquatadas",
"pageviews": 22,
"visit_duration": 82,
"visitors": 21,
"visits": 21
}
]
细分参数说明 展开以查看更多细节。
属性 - 字符串,可选
use Airan\Plausible\Facades\Plausible; $aggregates = Plausible::breakdown(property: '6mo')
property 必须是允许的之一,即 visitors、visits、pageviews、bounce_rate 或 visit_duration。如果未提供,则 period 默认为所有允许的;
Period - 字符串,可选
use Airan\Plausible\Facades\Plausible; $aggregates = Plausible::breakdown(period: '6mo')
period 必须是以下允许值之一,即 12mo、6mo、month、0d、7d、day 或 custom。如果未提供,则默认为 30d;
Date - 字符串,可选
use Airan\Plausible\Facades\Plausible; $aggregates = Plausible::breakdown(date: '2023-01-01')
日期格式为 Y-m-d。
信息
period: 'custom'不受支持。`date: '2023-01-01,2023-02-02' 不受支持。
Metrics - 数组,可选
use Airan\Plausible\Facades\Plausible; $aggregates = Plausible::breakdown(metrics: ['visits', 'pageviews', 'views_per_visit'])
metrics 必须包含以下允许值之一,即 visitors、visits、pageviews、views_per_visit、bounce_rate、visit_duration 或 events。如果未提供,则包含所有指标。
限制 - 整数,可选
use Airan\Plausible\Facades\Plausible;; $aggregates = Plausible::breakdown(limit: 200)
结果限制。它必须在 1 到 1000 之间。如果未提供,限制默认为 100。
页面 - 整数,可选
use Airan\Plausible\Facades\Plausible;; $aggregates = Plausible::breakdown(page: 2)
结果页面。如果未提供,页面默认为 1。
过滤器 - 字符串,可选
use Airan\Plausible\Facades\Plausible; $aggregates = Plausible::breakdown(filters: 'event:page==/blog**')
您的过滤器必须根据 plausible 指令 正确形成。默认为 null。
信息 不支持多个过滤器。
5. 缓存响应
为了提高应用程序的性能并减少对可能的 api 的依赖,所有请求都缓存了 3 分钟。您可以使用以下环境变量指定缓存持续时间(以秒为单位)和驱动程序。
PLAUSIBLE_CACHE_DURATION=300 PLAUSIBLE_CACHE_DRIVER=redis
如果由于某些原因您不想缓存响应,您可以添加以下环境变量来完全关闭缓存。
PLAUSIBLE_CACHE=false
测试
信息 要测试此包,请运行以下命令。
composer test
变更日志
有关最近更改的更多信息,请参阅 发布。
贡献
有关详细信息,请参阅 CONTRIBUTING。
安全漏洞
有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略。
致谢
许可协议
MIT 许可协议 (MIT)。有关更多信息,请参阅 许可文件。