运行 Laravel 作业链同步
Running Laravel job chain synchronously
我有一个像这样的 Laravel 作业链
Job1::withChain([
new Job2(),
new Job3(),
new Job4()
])->dispatch();
有时我想让它运行同步作业。
但是当我将 ->dispatch()
更改为 ->dispatchNow()
时,我得到
Call to undefined method Illuminate\Foundation\Bus\PendingChain::dispatchNow()
是否有任何其他方法可以同步 运行 作业链?
您可以在 sync
连接上使用 allOnConnection
方法和 运行 它们:
Job1::withChain([
new Job2(),
new Job3(),
new Job4()
])->dispatch()->allOnConnection('sync');
只需检查 config/queue.php
文件中 sync
连接的 driver
确实是 'sync'
.
另一种选择,当您想在 运行 同步作业与异步作业之间轻松 "toggle" 时并不理想,它只是一个接一个地分派它们,例如:
Job1::dispatchNow();
Job2::dispatchNow();
Job3::dispatchNow();
Job4::dispatchNow();
我有一个像这样的 Laravel 作业链
Job1::withChain([
new Job2(),
new Job3(),
new Job4()
])->dispatch();
有时我想让它运行同步作业。
但是当我将 ->dispatch()
更改为 ->dispatchNow()
时,我得到
Call to undefined method Illuminate\Foundation\Bus\PendingChain::dispatchNow()
是否有任何其他方法可以同步 运行 作业链?
您可以在 sync
连接上使用 allOnConnection
方法和 运行 它们:
Job1::withChain([
new Job2(),
new Job3(),
new Job4()
])->dispatch()->allOnConnection('sync');
只需检查 config/queue.php
文件中 sync
连接的 driver
确实是 'sync'
.
另一种选择,当您想在 运行 同步作业与异步作业之间轻松 "toggle" 时并不理想,它只是一个接一个地分派它们,例如:
Job1::dispatchNow();
Job2::dispatchNow();
Job3::dispatchNow();
Job4::dispatchNow();