mxl/laravel-job

Laravel 任务工具

v1.6.0 2024-04-17 04:01 UTC

This package is auto-updated.

Last update: 2024-09-17 04:57:01 UTC


README

Current version Monthly Downloads Total Downloads Build Status

Laravel 任务工具

  • 从命令行带参数派发任务到队列或同步运行;
  • Job 基类包含样板。

安装

$ composer require mxl/laravel-job

Laravel 5.5+ 将使用 自动发现 功能,将 MichaelLedin\LaravelJob\LaravelJobServiceProvider::class 添加到提供者。

此包与旧版 Laravel 版本不兼容。

使用方法

从命令行到队列派发任务

确保您使用 sync 连接(参见 config/queue.php 中的 default 属性)或运行队列工作进程

$ php artisan queue:work

然后使用以下命令派发

$ php artisan job:dispatch YourJob

如果 YourJob 类位于 \App\Jobs 下或指定带有命名空间的完整类名

$ php artisan job:dispatch '\Path\To\YourJob'

立即运行任务

如果您想立即运行任务而不将其发布到队列,请使用 job:dispatchNow 命令

$ php artisan job:dispatchNow YourJob

使用参数派发任务

$ php artisan job:dispatch YourJob John 1990-01-01

John1990-01-01 值将作为 $name$birthDate 参数传递给 YourJob 构造函数

class YourJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    __constructor($name, $birthDate)
   {
       // ...
   }

   public function handle()
   {
       // ...
   }
}

从命令行和 PHP 代码使用带参数的任务

通常任务已经在 PHP 代码中某个地方使用,如果它有构造函数参数且需要特定类型,则可能需要解析命令行参数。

为此实现 FromParameters 接口

use MichaelLedin\LaravelJob\FromParameters;
use Carbon\Carbon;

class YourJob implements ShouldQueue, FromParameters
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
 
    __constructor(string $name, Carbon $birthDate)
    {
        // ...
    }
 
    public function handle()
    {
        // ...
    }

    public static function fromParameters(...$parameters)
    {
        return new self($parameters[0], Carbon::parse($parameters[1]));
    } 
}

任务样板

任务类始终使用相同的接口 ShouldQueueDispatchableInteractsWithQueueQueueableSerializesModels

为了避免此类样板,您的任务可以扩展 MichaelLedin\LaravelJob\Job

use MichaelLedin\LaravelJob\Job;
use Carbon\Carbon;

class YourJob extends Job
{
    // ...
}

它还包括默认的 FromParameters 接口实现,相当于调用带有命令行参数的构造函数而不进行任何解析。
要添加解析,重写 fromParameters 方法。

维护者

作者的其他有用 Laravel 包

许可证

有关详细信息,请参阅 LICENSE 文件。