ami-praha/laravel-db-queue-monitor

Laravel 数据库队列监控

1.1.0 2021-01-15 14:45 UTC

This package is auto-updated.

Last update: 2024-09-15 22:52:26 UTC


README

本软件包提供了类似于 Laravel Horizon 的数据库队列监控功能。

特性

  • 监控所有作业,如 Laravel Horizon 所示,而不仅限于 redis
  • 处理异常情况下的失败作业
  • 支持毫秒
  • 队列监控模型

安装

composer require ami-praha/laravel-db-queue-monitor

或者将 ami-praha/laravel-db-queue-monitor 添加到您的 composer.json

"ami-praha/laravel-db-queue-monitor": "^1.0.12"

运行 composer update 以获取最新版本。

如果您使用的是 Laravel 5.5+,那么您已经完成了,否则继续以下步骤

AmiPraha\LaravelDbQueueMonitor\Providers\LaravelDbQueueMonitorProvider::class,

将服务提供者添加到您的 app.php 配置文件中

配置

将配置文件复制到配置文件夹中

$ php artisan vendor:publish --provider="AmiPraha\LaravelDbQueueMonitor\Providers\LaravelDbQueueMonitorProvider"  --tag="config"

如果您想修改组件,请将 Vue 组件复制到资源文件夹中(如果不修改组件,则不需要此步骤)

$ php artisan vendor:publish --provider="AmiPraha\LaravelDbQueueMonitor\Providers\LaravelDbQueueMonitorProvider" --tag="vue-components"

并在 admin/app.js 中添加组件,如下所示

Vue.component('basic-laravel-db-queue-monitor', require('./components/BasicLaravelDbQueueMonitor'));

或者如果您直接从包中使用组件,则如下所示

Vue.component('basic-laravel-db-queue-monitor', require('../../../../vendor/ami-praha/laravel-db-queue-monitor/resources/assets/js/admin/components/BasicLaravelDbQueueMonitor'));

迁移队列监控表。表名可以在配置文件中配置。

$ php artisan migrate

用法

要监控一个作业,请添加 AmiPraha\LaravelDbQueueMonitor\Traits\LaravelDbQueueMonitor 特性。

更新作业进度/自定义数据

您可以更新当前作业的进度,如 FFMpeg 所支持

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use AmiPraha\LaravelDbQueueMonitor\Traits\LaravelDbQueueMonitor; // <---

class ExampleJob implements ShouldQueue
{
    use Dispatchable;
    use InteractsWithQueue;
    use Queueable;
    use SerializesModels;
    use LaravelDbQueueMonitor; // <---

    public function handle()
    {
        // Save progress, if job driver supports
        $ffmpeg->on('progress', function ($percentage) {

            $this->queueProgress($percentage);
        });

        // Save data if finished. Must be type of array
        $this->queueData(['foo' => 'bar']);
    }
}

检索已处理的作业

use AmiPraha\LaravelDbQueueMonitor\Models\Monitor;

$jobs = Monitor::ordered()->get();

foreach ($jobs as $job) {

    // Exact start & finish dates with milliseconds
    $job->startedAtExact();
    $job->finishedAtExact();
}

模型作用域

// Filter by Status
Monitor::failed();
Monitor::succeeded();

// Filter by Date
Monitor::lastHour();
Monitor::today();

// Chain Scopes
Monitor::today()->failed();

// Get parsed custom Monitor data

$monitor = Monitor::find(1);

$monitor->data; // Raw data string

$monitor->parsed_data; // JSON decoded data, always array

待办事项

  • 添加作业和 Artisan 命令以自动清理旧的数据库条目

本软件包的灵感来源于 gilbitron 的 laravel-queue-monitor 软件包。