TL; DR
php artisan queue:work =运行一个排队的工作并停止
php artisan queue:listen =运行所有排队的作业并监听更多直到停止
更多细节:
你是如何运行命令的?你只是打开一个终端并运行它,或者你有一个cron作业,每隔一段时间运行一次?
如果您只是打开终端并且正在运行php artisan queue:work将在队列上完成一项任务然后停止,而如果您运行php artisan queue:listen它将处理队列中的所有作业并继续侦听任何进一步的作业,直到它停止.
进一步阅读有关queue:work以下内容的文档:
启动队列侦听器
Laravel包含一个Artisan命令,当它们被推入队列时将运行新的作业.您可以使用queue:listen命令运行侦听器:
php artisan queue:listen处理队列中的第一个作业
要仅处理队列中的第一个作业,可以使用queue:work命令:
php artisan queue:work
你应该做什么?
我猜你最好要做到你的服务器设置一个cron作业的时间间隔连续运行,并让它运行queue:work.更好的是,熟悉文档并在此之后做出决定.
看到这里回答的类似问题:queue:work --daemon和queue:listen之间有什么区别