croustibat/filament-jobs-monitor

用于 FilamentPHP 所有驱动程序的背景任务监控,类似于 Horizon

2.5.0 2024-07-04 09:49 UTC

README

Latest Version on Packagist Total Downloads

这是一个用于监控 FilamentPHP 背景任务的包。它受到 Laravel Horizon 的启发,并与所有驱动程序兼容。

Screenshot 2023-09-13 at 23 18 44 Screenshot 2023-09-13 at 23 18 23

安装

安装前请检查您的 filamentPHP 版本

通过 composer 安装此包

composer require croustibat/filament-jobs-monitor

使用以下命令发布和运行迁移

php artisan vendor:publish --tag="filament-jobs-monitor-migrations"
php artisan migrate

使用方法

配置

可以使用以下命令发布全局插件配置

php artisan vendor:publish --tag="filament-jobs-monitor-config"

这是发布配置文件的内容

return [
    'resources' => [
        'enabled' => true,
        'label' => 'Job',
        'plural_label' => 'Jobs',
        'navigation_group' => 'Settings',
        'navigation_icon' => 'heroicon-o-cpu-chip',
        'navigation_sort' => null,
        'navigation_count_badge' => false,
        'resource' => Croustibat\FilamentJobsMonitor\Resources\QueueMonitorResource::class,
    ],
    'pruning' => [
        'enabled' => true,
        'retention_days' => 7,
    ],
    'queues' => [
        'default'
    ],
];

注意:由于没有通用的方法来检索所有使用的队列,因此有必要定义它们以获取所有待处理作业。

扩展模型

有时扩展模型以添加一些自定义方法是有用的。您可以通过创建自己的模型来扩展模型

$ php artisan make:model MyQueueMonitor

然后您可以通过添加自己的方法来扩展模型

    <?php

    namespace App\Models;

    use \Croustibat\FilamentJobsMonitor\Models\QueueMonitor as CroustibatQueueMonitor;

    class MyQueueMonitor extends CroustibatQueueMonitor {}

使用 Filament 面板

如果您正在使用 Filament 面板,您可以将插件注册到面板配置中。这将注册插件资源,并允许您使用可选的链式方法设置配置。

例如,在您的 app/Providers/Filament/AdminPanelProvider.php 文件中

<?php


use \Croustibat\FilamentJobsMonitor\FilamentJobsMonitorPlugin;

...

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            FilamentJobsMonitorPlugin::make()
        ]);
}

使用方法

只需运行一个后台任务,然后转到路由 /admin/queue-monitors 即可查看作业。

示例

转到 示例 文件夹查看作业示例文件。

然后您可以使用以下代码调用您的作业

    public static function table(Table $table): Table
    {
        return $table

        // rest of your code
        ...

        ->bulkActions([
            BulkAction::make('export-jobs')
            ->label('Background Export')
            ->icon('heroicon-o-cog')
            ->action(function (Collection $records) {
                UsersCsvExportJob::dispatch($records, 'users.csv');
                Notification::make()
                    ->title('Export is ready')
                    ->body('Your export is ready. You can download it from the exports page.')
                    ->success()
                    ->seconds(5)
                    ->icon('heroicon-o-inbox-in')
                    ->send();
            })
        ])
    }

启用导航

        // AdminPanelProvider.php
        ->plugins([
            // ...
            FilamentJobsMonitorPlugin::make()
                ->enableNavigation(),
        ])

或者您可以使用闭包来只为特定用户启用导航

        // AdminPanelProvider.php
        ->plugins([
            // ...
            FilamentJobsMonitorPlugin::make()
                ->enableNavigation(
                    fn () => auth()->user()->can('view_queue_job') || auth()->user()->can('view_any_queue_job)'),
                ),
        ])

变更日志

请参阅 变更日志 了解最近更改的详细信息。

贡献

请参阅 贡献指南 了解详细信息。

安全漏洞

请参阅 我们的安全策略 了解如何报告安全漏洞。

鸣谢

许可证

MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。