在我的表格"工作"有5个工作,我用过程" php工匠队列:听"在localhost然后它运行所有工作并完成。但是当我在服务器上使用这个过程时,它只运行一次作业(同样的#34; php artisan queue:work")。我使用queue_driver是"数据库"。
答案 0 :(得分:7)
<强> TL; DR 强>
php artisan queue:work
=运行一个排队的作业并停止
php artisan queue:listen
=运行所有排队的作业并听取更多内容直到
更多详情:
你是如何运行命令的?你只是打开一个终端并运行它还是你有一个cron作业来定期运行?
如果您只是打开终端并且运行php artisan queue:work
将在队列上完成一项任务然后停止,而如果您运行php artisan queue:listen
它将处理队列中的所有作业并继续听取任何进一步的工作,直到它停止。
Read further in the docs regarding queue:work
:
启动队列侦听器
Laravel包含一个Artisan命令,可以按原样运行新的工作 推到队列上。您可以使用队列运行侦听器:listen 命令:
php artisan queue:listen
处理队列中的第一个作业
要仅处理队列中的第一个作业,您可以使用queue:work命令:
php artisan queue:work
你应该做什么?
我猜你在服务器上想要做的事情是设置一个cron作业,以便每隔一段时间连续运行并让它运行queue:work
。更好的是,熟悉文档并在此之后做出决定。
请参阅此处回答的类似问题:What is the difference between queue:work --daemon and queue:listen
答案 1 :(得分:1)
更新-Laravel 5.5 +
只需使用:
php artisan queue:work --once