crazybooot/queue-stats

此包的最新版本(dev-master)没有提供许可证信息。

Laravel 5.5 包,用于收集队列统计信息

安装: 275

依赖: 0

建议者: 0

安全: 0

星星: 6

关注者: 2

分支: 5

公开问题: 13

语言:JavaScript

类型:

dev-master 2017-11-13 21:07 UTC

This package is auto-updated.

Last update: 2024-09-20 04:07:57 UTC


README

Laravel 队列工作统计信息收集包

安装

  • 将 composer 包安装到您的 Laravel 项目中
$ composer require crazybooot/queue-stats
  • 将服务提供者添加到 config/app.php
    'providers' => [
        ...
        Crazybooot\QueueStats\Providers\QueueStatsServiceProvider::class,
    ],
  • 发布迁移
$ php artisan vendor:publish --provider="Crazybooot\QueueStats\Providers\QueueStatsServiceProvider" --tag="migrations"
  • 运行迁移
$ php artisn migrate
  • 在您想要收集统计信息的作业模型上使用 QueueStatsTrait 和 QueueStatsInterface
...
use Crazybooot\QueueStats\Traits\QueueStatsTrait;
use Crazybooot\QueueStats\Interfaces\QueueStatsInterface;

class ExampleJob implementes QueueStatsInterface, ShouldQueue
{
    use QueueStatsTrait;
}
  • 此外,您还可以使用扩展 artisan 命令来生成带有 QueueStatsTrait 和 QueueStatsInterface 的作业。只需将 StatJobMakeCommand 命令添加到 app/Console/Kernel.php。此命令会覆盖 php artisan make:job
    protected $commands = [
        ...
        Crazybooot\QueueStats\Make\StatJobMakeCommand::class
    ];

使用方法

获取作业统计信息

...
use Crazybooot\QueueStats\Models\Job;

...
// get failed jobs
Job::failed()->get();

// get success jobs
Job::success()->get();

// get not handled jobs
Job::notHandled()->get();

// get jobs handled on specified queue
Job::queue('default')->get();

// get jobs on specified connection
Job::connection('redis')->get();

// get jobs with specified class
Job::class(ExampleJob::class)->get();

// get jobs with specified number of attempts
Job::attemptsCount(3)->get();

// get jobs which has result
Job::withResult()->get();

// get jobs which have no result
Job::withoutResult()->get();

// get jobs with specified type
Job::type('custom_type')->get();

// get jobs without type
Job::withoutType()->get();

您可以通过在调度作业之前在作业实例上使用 getUuid() 方法来获取一个作业的统计信息

...
use Crazybooot\QueueStats\Models\Job;
use App\Job\ExampleJob;

...

$job = new ExampleJob();
$uuid = $job->getUuid();

...

dispath($job);

...

$jobStats = Job::where('uuid', $uuid)->first();

// returns total job atempts waiting on queue duration in seconds
$waitingDuration = $jobStats->getAttribute('waiting_duration');

// returns total job atempts handling duration in seconds
$handlingDuration = $jobStats->getAttribute('handling_duration);

// return job attempts count
$attemptsCount = $jobStats->getAttribute('attempts_count');

您可以将一些作业结果添加到统计信息中,传递要保存的数组数据 $this->saveResult()。结果将以 json 格式存储在数据库中,允许使用 Eloquent 或 Query Builder 查询更复杂的数据。

use Crazybooot\QueueStats\Traits\QueueStatsTrait;

class ExampleJob implementes ShouldQueue
{
    use QueueStatsTrait;
    
    ...
    
    public function handle()
    {
    
    ...
    
    $this->saveResult([
        'some_key' => [
            'some_key' => 'some_payload'
        ]
    ]);
    }
}

要求

  • PHP:7.0+
  • Laravel:5.5
  • 支持的队列驱动程序:数据库、beanstalkd、redis