mxl / laravel-job
Laravel 任务工具
v1.6.0
2024-04-17 04:01 UTC
Requires
- php: >=7.0
- laravel/framework: 5.5.*|5.6.*|5.7.*|5.8.*|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- phpunit/phpunit: ^9.2|^10.5
README
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
John
和 1990-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])); } }
任务样板
任务类始终使用相同的接口 ShouldQueue
、Dispatchable
、InteractsWithQueue
、Queueable
和 SerializesModels
。
为了避免此类样板,您的任务可以扩展 MichaelLedin\LaravelJob\Job
类
use MichaelLedin\LaravelJob\Job; use Carbon\Carbon; class YourJob extends Job { // ... }
它还包括默认的 FromParameters
接口实现,相当于调用带有命令行参数的构造函数而不进行任何解析。
要添加解析,重写 fromParameters
方法。
维护者
作者的其他有用 Laravel 包
- mxl/laravel-api-key - 用于 Laravel 的 API Key 授权,具有重放攻击预防功能;
- mxl/laravel-queue-rate-limit - 简单的 Laravel 队列速率限制;
许可证
有关详细信息,请参阅 LICENSE 文件。