有什么区别队列:工作和队列:听

Mis*_*Cat 28 laravel

我无法理解Laravel queue:work和Laravel 之间的区别queue:listen

我知道:

  • 队列:收听给定的队列
  • 工作:处理队列中的下一个作业

但仍然没有得到它,因为我已经尝试了两者,如果有任何新队列("工作选项"不只是运行一次),两者都将运行队列

我不是在谈论守护进程选项.就是这两个.

当我跑队时:工作就像听

Ohg*_*why 33

直到Laravel 5.2你有:listen:work.

Work 将处理队列中的第一个作业.

Listen 会处理所有工作.

在Laravel 5.3+中不再是这种情况.Listen仍然存在,但它已被弃用并计划删除5.5.你:work现在应该更喜欢.

Work 现在一个接一个地处理作业,但是你可以配置很多选项.

编辑

在发布时,上述情况属实,但从那时起事情发生了一些变化.

queue:work当您希望队列作为一个队列运行时,应该首选daemon.这将是一个长期存在的过程,在性能成为问题的情况下是有益的.这将使用应用程序的缓存版本,并且不会在每次处理作业时重新引导应用程序.

queue:listen 应该在不关心性能时使用,或者您不希望在更改代码后重新启动队列.

  • 他们都会按照收到的顺序从队列中逐个弹出作业.
  • 它们共享几乎完全相同的选项,可以传递给它们.

  • 不知道为什么,但是“不建议使用”的“ listen”更适合本地开发,因为它总是运行最新的代码,而不是像“ work”那样执行/启动命令时的代码快照。 (2认同)

Sha*_*rkh 14

在 Laravel 5.3+ queue:work 运行守护进程监听器。如果您指定了--daemon标志,它也可以在 5.2 中使用。守护进程工作引导框架一次,然后重复处理作业。该queue:listen命令queue:work --once在循环中运行一个子进程,每次迭代都会启动框架

queue:work应该几乎总是在生产中使用,因为它更高效并且使用更少的 RAM。然而; 您需要在每次核心更改后重新启动它。queue:listen对开发和本地环境很有用,因为您不必在代码更改后重新启动它(因为框架正在重新启动每个作业)。

从这里