我无法理解Laravel queue:work
和Laravel queue:listen
我可以看到:
但仍然没有得到它,因为我已经尝试过两者,如果有任何新队列("工作选项"不只是运行一次),两者都会运行队列
我不是在谈论守护进程选项。就是这两个。
答案 0 :(得分:25)
直到Laravel 5.2
你有:listen
和:work
。
Work
将处理队列中的第一个作业。
Listen
将处理所有工作。
在Laravel 5.3
+中不再是这种情况。 Listen
仍然存在,但已弃用,并计划在5.5
中删除。您现在应该更喜欢:work
。
Work
现在一个接一个地处理作业,但是你可以配置很多选项。
修改强>
在发布时上述情况属实,但从那时起事情发生了一些变化。
当您希望队列作为queue:work
运行时,应首选 daemon
。这将是一个长期存在的过程,在性能成为问题的情况下是有益的。这将使用应用程序的缓存版本,并且不会在每次处理作业时重新引导应用程序。
queue:listen
。
答案 1 :(得分:2)
在Laravel 5.3+队列中:work运行守护程序侦听器。如果指定了preReceive on channel 'getSend1'
postReceive on channel 'getSend1', message is null
Received no Message during the poll, returning 'false'
标志,它也可能在5.2中出现。守护程序工作引导框架一次,然后重复处理作业。 --daemon
命令在循环中运行queue:listen
子过程,该循环每次迭代都会启动框架。
queue:work --once
应该几乎总是在生产中使用,因为它效率更高且使用的RAM更少。然而;您需要在每次核心更改后重新启动它。 queue:work
对于开发和本地环境非常有用,因为您无需在代码更改后重新启动它(因为该框架正在重新启动每个作业)。
答案 2 :(得分:1)
列出了两个不同的问题。
有工匠队列:工作和工匠队列:听
queue:work将弹出队列中的下一个作业,并仅处理该作业。这是一个关闭'处理完一个队列命令后将返回命令提示符的命令。 queue:listen将侦听队列,并继续处理它收到的任何队列命令。这将继续无限期地运行,直到你停止它。 在Laravel> = 4.2中添加了--daemon命令。它的工作方式只是直接运行队列,而不是在处理完每个队列后重新启动整个框架。这是一个可选命令,可显着降低队列的内存和CPU要求。
使用--daemon命令的重点是,当您升级应用程序时,需要使用queue:restart专门重新启动队列,否则您可能会遇到各种奇怪的错误,因为您的队列仍然有旧的内存中的代码。
所以回答你的问题"我应该使用哪个命令来运行守护进程?" - 答案几乎总是排队:work --daemon
答案 3 :(得分:0)
在哪里可以了解团队队列:听听?在文档(Laravel 5.4)中,它不是这样的描述。只有队列:工作。
答案 4 :(得分:0)
webpack.conf
Artisan命令包含{ test: /\.(ttf|eot|svg|jpg|gif|png|woff|woff2)$/, loader: 'file-loader' }
强制选项 队列工作者继续处理作业而不重新启动 框架。这样可以显着降低CPU使用率 与队列相比:listen命令:如您所见,
queue:work
作业支持大多数相同的选项 可用于--daemon
。你可以使用php artisan helpqueue:work
查看所有可用选项的工作。
https://laravel.com/docs/5.1/queues#running-the-queue-listener