icemix/nodaemon

无需守护进程批量处理 Laravel 队列;处理队列作业并终止进程

0.1 2020-04-30 06:34 UTC

This package is auto-updated.

Last update: 2024-08-29 05:24:53 UTC


README

Build Status Latest Stable Version Total Downloads License

简介

无需守护进程批量处理 Laravel 队列;处理队列中的所有作业并退出守护进程模式。这在只想处理队列中的作业并退出工作进程以防止它们在内存中堆积的情况下很有用。

安装

要安装最新版本的 NoDaemon,只需使用 composer

下载

composer require icemix/nodaemon
  • 如果你的 Laravel 版本低于 5.5,你需要在 config/app.php 文件中添加服务提供者。
Queueworker\NoDaemon\NoDaemonServiceProvider::class,

用法

NoDaemon 是一个控制台应用程序,它扩展了 Laravel 的 WorkCommand - Illuminate\Queue\Console\WorkCommand 的功能。请参阅 Laravel 队列 文档。

要运行无守护进程模式的队列工作进程,只需将 --nodaemon 选项添加到原始 Laravel 队列工作进程命令中

php artisan queue:work --nodaemon

参数和选项

由于此包扩展了 Laravel 的 WorkCommand,它接受与原始 WorkCommand 相同的所有参数和选项,并增加了三个选项

  • --nodaemon 选项告诉工作进程在不运行守护进程模式的情况下处理队列中的作业。
  • --jobs(默认:0,可选) - 它允许你指定每次命令运行时处理的作业数量。默认值 0 表示将处理队列中所有可用的作业。
  • --max_exec_time(默认:ini_get('max_execution_time') - 5s,可选) - 在一些主机上,如果你的脚本运行时间超过一定时间,它会被终止。为了避免在队列特别满的情况下这种行为,工作进程将在 --max_exec_time 后停止。这在你通过应用程序的路由或控制器运行此命令时特别有用。请参阅 Laravel 文档 了解如何以编程方式运行队列。

关于 --max_exec_time 的说明

  • 0(零)表示工作进程将无限期运行,这在当前上下文中意味着直到工作进程完成。这是从 CLI 运行时的默认行为。
  • 此选项不会阻止“最大执行时间超出”错误,它将尝试通过不在脚本达到其 max_execution_time 时运行队列中的下一个作业来避免它。

测试

composer test

许可证

MIT 许可证(MIT) - 有关更多信息,请参阅 许可证文件