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

为什么队列:工作在Laravel 5.7上迭代1次后停止?

朱华皓
2023-03-14

运行命令后:

php artisan队列:工作

预期行为:队列工作人员将继续运行,直到停止或失败。

实际行为:无论作业是否失败或成功完成,队列工作者都会在每个作业后停止。

以上与Laravel 5.2一致https://laravel.com/docs/5.2/queues#daemon-queue-worker

但是,由于我运行的是Laravel 5.7,因此我希望出现中描述的行为https://laravel.com/docs/5.7/queues#running-排队工人

在Laravel forge中运行工作程序时,队列工作程序似乎会在每次作业后重新启动。

有没有我缺少的任何配置可以解释这种行为?

注意:当队列工作程序结束时,不会抛出任何异常,也不会记录任何内容。它只是重新启动。

共有1个答案

萧元徽
2023-03-14

您是对的,php artisan queue:work应该一直运行,直到手动停止。唯一的例外是以下选项:

  • --一次只处理队列上的下一个作业
  • --当队列为空时停止

我的猜测是Laravel forge使用监督者来重新启动后台作业,以防止内存泄漏和其他故障。有关laravel主管的更多信息,请参阅文档。

您是否尝试过在您的开发环境中运行它,看看它是否也在那里重新启动?

 类似资料:
  • 我一直在使用一个异步任务,通过REST API将数据从应用程序发送或提取到数据库,反之亦然。我在我的几个项目(已完成)中使用的代码也是我在其他新项目中使用的代码。我现在创建了一个新项目,工作的异步代码不再取数据了,但是我在以前的项目中粘贴的相同代码,它工作得很好。我有一个新的项目明天开始,我希望我易于使用的代码在新的项目中也能很好地工作。被认为是在清单中添加了INTERNET权限。mainacti

  • 问题内容: 这是我的内容: 在Jenkins中使用Pipeline插件执行作业时,仅打印列表中的第一项。 有人可以向我解释这种奇怪的行为吗?是虫子吗?还是只是我不了解Groovy语法? 编辑 :预期的作品: 问题答案: 此处接受的答案指出这是一个已知的错误,并且使用了对我不起作用的解决方法,因此,我将提供我最近发现的更新。 尽管有了JENKINS-26481的解决方案(在撰写本文时,它还算是最近的

  • 问题内容: 我正在使用SELECT语句从表中获取数据,然后将其插入到另一个表中。但是,行“ stmt.executeQuery(query);” 从表中插入第一行然后退出。当我注释掉这一行时,while循环遍历所有行,将它们打印出来。stacktrace没有显示任何错误。为什么会这样呢? 问题答案: 您将重新使用循环最后一行中产生的那个。 这将关闭 。如文档中所述: 阿当对象将自动关闭生成它对象被

  • 我有一个在dev环境下运行的grails应用程序,我毫无问题地完成了这场战争 在服务器中,我使用“sudo service tomcat7 stop”命令停止服务,并将war文件放入服务器文件夹“/var/lib/tomcat7/webapps”,然后使用命令“sudo service tomcat7 start”再次启动服务器。为了检查服务器的状态,我运行“sudo service tomcat

  • 我正在运行kafka2.11-0.9.0.0和一个基于Java的生产者/消费者。与消息~70 KB一切工作良好。但是,在生产者将一个更大的70 MB消息排入队列之后,kafka似乎停止将消息传递给消费者。即。不仅大的消息没有传递,后续的小消息也没有传递。我知道制作人成功了,因为我使用了kafka回调进行确认,我可以在kafka消息日志中看到消息。 kafka配置自定义更改: 使用者配置:

  • 如果要在spring integration jms上为消息发布者创建qpid目标。例如,我可以创建如下队列: 之后,我将此队列设置为通道适配器: 如果发布者发送第一条消息,将在消息代理上创建队列。 但是如果我想动态设置队列,我能做什么呢? 发布者看起来像: } publisher方法的第二个参数是目标的名称。如果我在发送消息之前在brokerside上创建队列,那么这是可行的。我当前的解决方案是