我有一个像这样的 Laravel 工作链
Job1::withChain([
new Job2(),
new Job3(),
new Job4()
])->dispatch();
有时我希望它同步运行作业。
但是当我将 ->dispatch()
更改为 ->dispatchNow()
时,我得到
Call to undefined method Illuminate\Foundation\Bus\PendingChain::dispatchNow()
还有其他方法可以同步运行作业链吗?
最佳答案
您可以使用 allOnConnection
方法并在 sync
连接上运行它们:
Job1::withChain([
new Job2(),
new Job3(),
new Job4()
])->dispatch()->allOnConnection('sync');
只需检查 config/queue.php
文件中 sync
连接的驱动程序
确实是'sync'
.
另一种选择(当您想要在同步运行作业与异步运行作业之间轻松“切换”时并不理想)是一个接一个地分派(dispatch)它们,例如:
Job1::dispatchNow();
Job2::dispatchNow();
Job3::dispatchNow();
Job4::dispatchNow();
关于laravel - 同步运行 Laravel 作业链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59300730/