Ben*_*ird 4 queue closures dispatch laravel-5
在 laravel 4 中,我可以使用 将闭包推送到队列上queue::push(function...),但这在 laravel 5 中不再有效。相反,我似乎必须为要推送到队列中的每个函数创建一个自定义 Job 类。
由于我想要推送的函数只有几行长,并且只在一个地方使用过,所以为每种情况编写一个完整的类似乎真的是浪费时间和空间。
我目前能想到的最好的“解决方案”是要么有一个辅助函数,它使用 PHP 的反射方法在调用时动态生成一个新类,要么有一个接受闭包作为参数的通用作业,即dispatch(new ClosureJob(function(){...}));
这些对我来说似乎不太理想。还有其他方法可以做到这一点吗?或者我必须实施其中之一吗?
从 Laravel v5.7 开始,您可以像这样对闭包进行排队:
$podcast = App\Podcast::find(1);
dispatch(function () use ($podcast) {
$podcast->publish();
});
Run Code Online (Sandbox Code Playgroud)
文档: https: //laravel.com/docs/7.x/queues#queueing-closures
但是,强烈建议使用专用的作业类来提高代码质量并更好地维护应用程序。想象一下您想要检查队列中剩余的任务,或者想要控制特定代码应该在哪个队列/连接上运行。
因此,您需要一个专门的作业类: https ://laravel.com/docs/5.7/queues#creating-jobs
我想说,编写一个专用类几乎是 Laravel 标准,这就是您应该遵循的标准。
| 归档时间: |
|
| 查看次数: |
6688 次 |
| 最近记录: |