crazybooot / queue-stats
此包的最新版本(dev-master)没有提供许可证信息。
Laravel 5.5 包,用于收集队列统计信息
dev-master
2017-11-13 21:07 UTC
Requires
- illuminate/console: 5.*
- illuminate/support: 5.*
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