gpt4 book ai didi

laravel - 队列:work --daemon and queue:listen有什么区别

转载 作者:行者123 更新时间:2023-12-03 05:35:05 29 4
gpt4 key购买 nike

我正在设置我的离线作业服务器。我已阅读文档,但我仍然没有真正看到这两个命令之间的区别:artisanqueue:work --daemonartisanqueue:listen。我应该使用哪个命令来运行我的守护进程?

最佳答案

编辑更新于 2017 年 4 月 7 日:

现在可以通过三种方式运行队列:

  • queue:work - 这是新的“守护进程”进程(不再需要该标志)。该框架将启动“一次”,然后继续循环执行作业。这将无限期地持续下去。它比 queue:listen 使用更少的内存/CPU,因为框架始终保持运行状态。您还必须记住使用 queue:restart 强制队列更新您在修补期间推送的任何代码更改。

  • queue:work --once - 这将启动框架,处理一项作业,然后关闭。对于开发过程中的测试等很有用。

  • queue:listen - 这将在每个周期启动框架,处理一项作业,然后完全关闭,然后再次启动框架,等等并无限循环。这意味着在处理每个作业后,所有内存/进程都会被释放。如果您的 queue:work 出现内存泄漏 - 请尝试一下。

--daemon 标志不再对这些命令产生影响。

原始答案:

列出了两个不同的问题。

artisanqueue:workartisanqueue:listen

  • queue:work 将简单地弹出队列中的下一个作业,并仅处理该作业。这是一个“一次性”命令,一旦处理完一个队列命令,该命令就会返回到命令提示符。
  • queue:listen 将监听队列,并继续处理它收到的任何队列命令。这将无限期地继续运行,直到您停止它。

在 Laravel >=4.2 中添加了一个 --daemon 命令。它的工作方式只是继续直接运行队列,而不是在处理每个队列后重新启动整个框架。这是一个可选命令,显着降低队列的内存和 CPU 要求。

--daemon 命令的重要一点是,当您升级应用程序时,您需要使用 queue:restart 专门重新启动队列,否则您可能会收到各种奇怪的错误,因为您的队列内存中仍然有旧代码。

因此,要回答您的问题“我应该使用哪个命令来运行我的守护进程?” - 答案几乎总是 queue:work --daemon

关于laravel - 队列:work --daemon and queue:listen有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26048698/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com