daltcore / laravel-metrics
可管理的指标
Requires
- php: >=7.2
- illuminate/support: ^6.0
README
该包帮助您管理应用程序指标(例如时间、计数、金钱)
目录
安装
使用 composer 安装此包
composer require gurmanalexander/laravel-metrics:1.*
更新 composer 后,将 ServiceProvider 添加到 config/app.php 文件中的 providers 数组中
Laravel 5.5 使用包自动发现,因此不需要手动添加 ServiceProvider
Laravel 5.x
GurmanAlexander\Metrics\MetricsServiceProvider::class,
使用发布命令将包配置复制到本地配置中
php artisan vendor:publish --provider="GurmanAlexander\Metrics\MetricsServiceProvider"
您可以使用 metrics:table
命令生成具有正确表模式的迁移
php artisan metrics:table
然后执行迁移
php artisan migrate
用法
创建指标
您可以创建新的指标(默认为 CountMetrics),但可以使用参数 --time
更改为 TimeMetrics
php artisan make:metrics PageViewCountMetrics
创建 TimeMetrics 示例
php artisan make:metrics FirstPaymentMetrics
这将在 app/Metrics/
目录中创建新的类
class FirstPaymentMetrics extends CountMetrics { }
指标用法
现在您可以开始监视您的指标。您需要将 trait Metricable
添加到您想要监视的模型(例如 User)中
use GurmanAlexander\Metrics\Metricable; class User extends Model { use Metricable; ... }
启动指标
要启动指标
在 CountMetrics 中,第一个参数是
$user
(属于指标的用 户,默认null
),第二个参数是admin
(调用指标的用 户,默认null
),第三个参数是$count
(增加指标的数量。例如,您可以使用金钱指标。默认1
)
In TimeMetrics 只有两个参数 -
$user
和$admin
// For example, when creating user start Metrics $user = User::create(['email', 'password']); $user->startMetrics(new FirstPaymentMetrics($user));
或
// when user view some news $user = auth()->user(); $news->startMetrics(new PageViewCountMetrics($user));
停止指标
要停止指标
// when user make some payment $user->paySomething(); $user->closeMetrics(new FirstPaymentMetrics($user));
或
// when user logout $user = auth()->user(); $news->closeMetrics(new PageViewCountMetrics($user)); auth()->logout();
一次性指标
要触发一次性指标
$user = auth()->user(); $user->onceMetrics(new SomeOnceMetrics());
统计
要获取统计信息,可以使用 MetricsStatistics
类
示例
// to get total payments $stats = new MetricsStatistics(new FirstPaymentMetrics());
方法
user
通过 $user
(用户模型、用户数组或用户集合)过滤统计信息
$user
- 属于指标的用 户。
// model $stats->user(auth()->user()); // array $stats->user([auth()->user(), User:first()]); // collection $stats->user(User::where('is_active', 1)->get());
admin
通过 admin 过滤,就像通过 user 过滤一样
admin
- 调用指标的用 户。
startAt
从 $start_at
日期过滤
通过
end_at
字段(当指标停止时)计算指标统计信息
$start_at = Carbon::now()->startOfMonth(); $stats->startAt($start_at);
endAt
过滤到$end_at
日期
通过
end_at
字段(当指标停止时)计算指标统计信息
$end_at = Carbon::now()->endOfMonth(); $stats->endAt($end_at);
betweenAt
从$start_at
到$end_at
日期的过滤
通过
end_at
字段(当指标停止时)计算指标统计信息
$start_at = Carbon::now()->startOfMonth(); $end_at = Carbon::now()->endOfMonth(); $stats->betweenAt($start_at, $end_at);
period
按时间段分组计算统计数据
$stats->hourly(); $stats->daily(); $stats->weekly(); $stats->monthly(); $stats->yearly(); // result example $stats->hourly()->count()->toArray(); // [ // 0 => [ // "count" => 23, // "date" => "2017-06-30", // "period" => "hour", // "hour" => 9 // ], // 1 => [ // "count" => 15, // "date" => "2017-06-30", // "period" => "hour", // "hour" => 8 // ], // 2 => [ // "count" => 32, // "date" => "2017-06-30", // "period" => "hour", // "hour" => 7 // ], // ]
getBuilder
返回Builder以进行自定义计算
Results
以获取结果
count
返回数据库中所有过滤指标的计数
返回指标集合
sum
返回数据库中所有过滤指标的总和
如果是TimeMetrics - 指标的总秒数
avg
返回数据库中所有过滤指标的平均值
如果是TimeMetrics - 指标的平均秒数
min
返回数据库中所有过滤指标的最小值
如果是TimeMetrics - 指标的最小秒数
max
返回数据库中所有过滤指标的最大值
如果是TimeMetrics - 指标的最大秒数
示例
// to get total payments $stats = new MetricsStatistics(new FirstPaymentMetrics()); // to get average time from user registration to first payment (in seconds) $stats = new MetricsStatistics(new FirstPaymentMetrics())->hourly()->avg()->toArray(); // [ // 0 => [ // "avg" => 12.13, // "date" => "2017-06-30", // "period" => "hour", // "hour" => 9 // ], // 1 => [ // "avg" => 8.00, // "date" => "2017-06-30", // "period" => "hour", // "hour" => 8 // ], // 2 => [ // "avg" => 5.34, // "date" => "2017-06-30", // "period" => "hour", // "hour" => 7 // ], // ]