首页 > 解决方案 > 为什么 queue:work 在 Laravel 5.7 的 1 次迭代后停止?

问题描述

运行命令后:

php工匠队列:工作

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

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

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

但是,由于我正在运行 Laravel 5.7,因此我期望 https://laravel.com/docs/5.7/queues#running-the-queue-worker中描述的行为

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

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

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

标签: phplaravel

解决方案


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

  • --once只处理队列中的下一个作业
  • --stop-when-empty 队列为空时停止

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

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


推荐阅读