我有调度电话:
dispatch(new ProcessVideo($video));
logger('After dispatch at ' . Carbon::now()->format('H:i:s.u'));
和工作:
public function handle() : void
{
logger('ProcessVideo@handle at ' . Carbon::now()->format('H:i:s.u'));
}
在日志中,我们可以看到队列超过2.5秒的发送和处理之间的间隔!
[2017-10-11 00:02:55] local.DEBUG: After dispatch at 00:02:55.423141
[2017-10-11 00:02:58] local.DEBUG: ProcessVideo@handle at 00:02:58.071249
这可能是什么问题?它是我的本地机器,它只是一个被调度来测试功能的工作
答案 0 :(得分:1)
我面临与您类似的问题。处理第一份工作大约需要2-3秒的时间。
四处搜寻之后,我发现了laravel队列工作者 default 3 second sleep。
这意味着在较差的情况下,第一份工作会延迟3秒。
要解决此问题,只需在运行worker时指定--sleep = 0。希望对您有所帮助。
php artisan queue:worker --sleep=0