daltcore/laravel-metrics

该包已被废弃且不再维护。未建议替代包。

可管理的指标

2.0.2 2020-02-11 09:37 UTC

This package is auto-updated.

Last update: 2021-07-11 12:57:51 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
{

}

指标用法

现在您可以开始监视您的指标。您需要将 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
//     ],
// ]