gurmanalexander / laravel-metrics
可管理的指标
Requires
- php: >=5.5.0
- illuminate/support: 5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.*
This package is not auto-updated.
Last update: 2024-09-29 02:15:35 UTC
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 { }
指标用法
现在您可以开始监视您的指标。您需要将特质Metricable
添加到您要监视的模型(例如User)中
use GurmanAlexander\Metrics\Metricable; class User extends Model { use Metricable; ... }
启动指标
要启动指标
在CountMetrics的第一个参数-
$user
(属于指标的用戶,默认null
),第二个参数-admin
(调用指标的用戶,默认null
),第三个参数-$count
(增加指标的量。例如,您可以使用金钱指标。默认1
)
在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
结果
以获取结果
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 // ], // ]