疯狂小熊猫/jobs-stats

此软件包最新版本(dev-master)没有可用的许可信息。

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

安装: 22

依赖者: 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:01:06 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或查询构建器查询更复杂的数据。

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