Laravel队列只运行一个作业

时间:2016-05-13 10:12:35

标签: php database laravel queue

在我的表格"工作"有5个工作,我用过程" php工匠队列:听"在localhost然后它运行所有工作并完成。但是当我在服务器上使用这个过程时,它只运行一次作业(同样的#34; php artisan queue:work")。我使用queue_driver是"数据库"。

2 个答案:

答案 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