Laravel 5.3队列工作者,通过詹金斯一段时间后停止

时间:2019-07-23 20:15:52

标签: laravel jenkins laravel-queue

在Laravel 5.3中。

我正在通过詹金(Jenkin)运行laravel命令:

php artisan queue:work

但是我需要阻止它。理想情况下,我想在队列作业变空后停止工作程序,但是在Laravel 5.3上是不可能的。因此,另一种选择是在某个时间(例如1分钟)后停止命令。

一段时间后,如何停止通过jenkins运行的进程?或停止php artisan命令。

有了php artisan queue:restart,我可以停止所有工作,所以我尝试了:

php artisan queue:work
sleep 60; php artisan queue:restart

但是第二条线永远不会到达,因为工作人员仍在运行。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您可以使用一些解决方案来解决它

1。

  • 通过避免启动整个应用程序来节省服务器资源 每一份工作。
  • 您必须手动重新启动工作程序以反映任何 您在应用程序中进行的代码更改。

您还可以运行:

php artisan queue:work --once

2-这将启动应用程序的实例,处理单个作业,然后终止脚本。

php artisan queue:listen

queue:listen命令仅在无限循环内运行queue:work --once命令,这将导致以下情况:

  • 在每个循环中都会启动该应用程序的实例。
  • 分配的工人将选择一个作业并执行。
  • 工作者进程将被杀死。

使用queue:listen可确保为每个作业创建一个新的应用程序实例,这意味着您无需手动重新启动工作程序,以防万一您对代码进行了更改,但同时也意味着更多的服务器资源将被消耗。