ami-praha / laravel-db-queue-monitor
Laravel 数据库队列监控
1.1.0
2021-01-15 14:45 UTC
Requires
- php: >=7.3
- laravel/framework: ^5.3|^6.0|^7.0|^8.0
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 软件包。