orrison / laravel-are-we-there-yet
跟踪相关作业,当所有作业都完成时执行闭包
3.0.1
2020-08-03 18:43 UTC
Requires
- ext-json: *
Requires (Dev)
- mockery/mockery: ^1.4
- orchestra/testbench: ^5.0
- phpunit/phpunit: ^9.2
README
易于使用的辅助方法,用于分发作业列表和作业链,当所有作业完成后,触发最后一个最终作业。通常我们分发的作业可以并行运行,但一旦所有作业都完成,就需要执行其他操作。
使用parallelDispatch
辅助方法,您可以分发作业列表和链式作业,一旦它们全部成功完成,将触发您定义的“完成作业”。
/** * parallelDispatch * * @param mixed $jobList An array of job objects you would like dispatched and tracked. * Adding a multidimensional array will dispatch the sub-array in a job chain in the order they are listed * @param object $completionJob A fully instantiated class for the job to be run once all other jobs in the job list have completed. * @return void */ function parallelDispatch($jobList, $completionJob)
安装 & 设置
使用以下命令通过composer安装
composer require orrison/laravel-are-we-there-yet
需要两个表来跟踪awty_goals
和awty_tasks
。它们可以在安装后运行迁移来添加。
php artisan migrate
在设置好包和表之后,您现在可以通过parallelDispatch
分发一组作业,一旦所有作业都完成,将触发“完成作业”。包含在集群中的所有作业都必须具有Trackable
特性。完成作业不需要特性。
示例
并行运行作业列表
SomeJobToBeRunAfter
将在所有作业都完成后运行。
parallelDispatch( [ new JobOne(), new JobTwo($arg1, $arg2), ], new SomeJobToBeRunAfter($someJobArg) );
运行包含作业链的作业列表
链中的作业也可以通过在主$jobList
中包含一个作业对象子数组来分发。它们将按列表中的顺序链接。
parallelDispatch( [ new JobOne(), [ new chainedJobOne($arg1), new chainedJobTwo(), ], new JobTwo($arg1, $arg2), ], new SomeJobToBeRunAfter($someJobArg) );
在上面的示例中,JobOne
、JobTwo
和chainedJobOne
将立即分发。但chainedJobTwo
和该数组中的其他任何作业都将链接到chainedJobOne
,并且将按它们列出的顺序顺序完成。
基于作业跟踪:[https://github.com/rafter-platform/rafter](https://github.com/rafter-platform/rafter)
测试
composer test