当前位置: 首页 > 知识库问答 >
问题:

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

葛昱
2023-03-14

我不明白Laravelqueue:work和Laravelqueue:listen

我可以看到:

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

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

我不是在说守护进程选项。就这两个。

共有3个答案

上官正志
2023-03-14

queue:workArtisan命令包含一个--daemon选项,用于强制队列工作程序继续处理作业,而无需重新启动框架。与queue:listen命令相比,这会显著减少CPU使用量:

如您所见,队列: work作业支持队列:监听可用的大多数相同选项。您可以使用php artisan help队列:work作业来查看所有可用的选项。

https://laravel.com/docs/5.1/queues#running-队列侦听器

闾丘高峰
2023-03-14
匿名用户

在Laravel5.3队列中:work运行一个守护进程侦听器。如果您指定了--daemon标志,也可以在5.2中使用它。守护进程只引导框架一次,然后重复处理作业。queue:listen命令在一个循环中运行一个queue:work--one子进程,该子进程引导框架每次迭代。

queue:work应该经常在生产中使用,因为它效率更高,占用的内存更少。然而您需要在每次核心更改后重新启动它<代码>队列:listen对于开发和本地环境很有用,因为在代码更改后不必重新启动它(因为框架正在重新启动每个作业)。

从这里

田丰
2023-03-14

直到Laravel5.2你才有了:倾听:工作

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

监听将处理所有作业。

在Laravel 5.3中,情况不再如此 Listen仍然存在,但它已被弃用,并计划在 5.5中删除。你最好现在就开始工作

Work现在可以一个接一个地处理作业,但您可以配置过多的选项

编辑

上述情况在发帖时是正确的,但从那以后情况有所改变。

当您希望队列作为守护进程运行时,应首选队列:工作。这将是一个长期的过程,如果性能是一个问题,这将是有益的。这将使用应用程序的缓存版本,并且不会在每次处理作业时重新引导应用程序。

队列:当您不关心性能或您不想在更改代码后重新启动队列时,应该使用监听

  • 它们都会在收到作业时将作业逐个从队列中弹出
  • 他们都拥有几乎完全相同的期权,可以传递给他们

 类似资料:
  • 本文向大家介绍队列和栈是什么?有什么区别?相关面试题,主要包含被问及队列和栈是什么?有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 队列和栈都是被用来预存储数据的。 队列允许先进先出检索元素,但也有例外的情况,Deque 接口允许从两端检索元素。 栈和队列很相似,但它运行对元素进行后进先出进行检索。

  • (1)队列先进先出,栈先进后出。 (2)遍历数据速度不同。 栈只能从头部取数据 也就最先放入的需要遍历整个栈最后才能取出来,而且在遍历数据的时候还得为数据开辟临时空间,保持数据在遍历前的一致性; 队列则不同,他基于地址指针进行遍历,而且可以从头或尾部开始遍历,但不能同时遍历,无需开辟临时空间,因为在遍历的过程中不影像数据结构,速度要快的多。

  • rabbitMQ 工作队列 轮询分发 >[danger] 简单队列是一对一的关系,一个生成者对应一个消费者,实际开发中,一般消费者是以业务相结合的,需要时间去处理业务,如果只有一个消费者,那么生产者就会积压很多消息,消费不出去 代码演示: 'use strict'; const Controller = require('egg').Controller; /** * 队列一对多演示 * 生产

  • 工作队列接口 结构体 struct   rt_workqueue   工作队列控制块 更多...   struct   rt_work   工作回调函数信息 更多...   函数 struct rt_workqueue *  rt_workqueue_create (const char *name, rt_uint16_t stack_size, rt_uint8_t priority)   创

  • 队列,和 栈一样,也是一种对数据的"存"和"取"有严格要求的 线性存储结构。 与栈结构不同的是, 队列的两端都"开口",要求数据只能从一端进,从另一端出,如图 1 所示: 图 1 队列存储结构 通常,称进数据的一端为 "队尾",出数据的一端为 "队头",数据元素进队列的过程称为 "入队",出队列的过程称为 "出队"。 不仅如此, 队列中数据的进出要遵循 "先进先出" 的原则,即最先进队列的数据元素

  • 我试图在容器启动并运行后运行以下命令。 " 然而,这完全破坏了我的容器启动。 我应该如何以Docker的方式来做这件事? 编辑: 使用docker-comact我添加了这一行到我的docker-compose.yml文件 容器启动了,但没有提供任何请求:S 使用此选项: 启动后容器停止运行 最终解决方案 所以最后我想,也许负责交付应用程序的服务器不应该是运行队列的服务器。 因此,我启动了同一doc