webparking / laravel-queue-ensurer
此Composer包提供了一个Laravel队列确保器。
Requires
- php: >=7.1.0
- ext-json: *
- ext-posix: *
- illuminate/console: ^5.5|^6.0|^7.0|^8.0
- illuminate/support: ^5.5|^6.0|^7.0|^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.12
- orchestra/testbench: ^3.0|^4.0|^5.0|^6
- phpmd/phpmd: ^2.6
- phpstan/phpstan: ^0.12.18
- phpunit/phpunit: ^6.0|^7.0|^8.0|^9.0
This package is auto-updated.
Last update: 2024-08-29 04:54:46 UTC
README
Laravel队列确保器
此包提供了一个命令(queue:ensure-processes
),允许从Laravel调度运行Laravel队列工作进程(queue:work
)。这允许cronjob确保配置的队列工作进程正在运行。它消除了需要像supervisord这样的进程管理器的需求,这种进程管理器并非在所有生产环境中都可用(例如,在处理DirectAdmin或大多数其他服务器控制面板时)。
可以配置多个队列,并为每个队列配置所需进程的数量(这使得并行运行多个作业成为可能)。这样做,可以在项目的代码库中拥有队列配置。
此包不关心您使用哪些队列驱动程序,queue:restart
仍然按正常工作。
安装
composer require webparking/laravel-queue-ensurer
默认情况下,queue:ensure-processes
命令配置为每分钟运行一次,确保默认队列有一个工作进程。所以如果您只想要这些,那就没问题。
配置
您可以通过运行php artisan vendor:publish --provider="Webparking\QueueEnsurer\ServiceProvider" --tag="config"
将配置文件发布到您的项目中。
有关可配置选项的文档可以在配置文件中找到。
工作原理
队列确保器通过保持已启动的进程ID(PID)的缓存来工作。每次确保器运行时,它都会这样做
- 从缓存中删除已停止进程的PID。这些进程可能是由服务器重启、
queue:restart
或其他原因停止的。 - 杀死不再配置的队列的进程,并从缓存中删除它们的PID。当队列以前被配置为具有进程,但现在不再配置时。
- 杀死不再需要的进程,并从缓存中删除它们的PID。当配置的进程数少于运行进程数时。
- 启动新进程,并将它们的PID添加到缓存中。当配置的进程数多于运行进程数时。
这意味着确保器不会考虑它没有启动的任何进程。
对于PID缓存,确保器使用JSON文件(storage/app/queue-listener-pids.json
)而不是Laravel缓存机制。如果队列确保器使用Laravel缓存,并且缓存被清除(php artisan cache:clear
),那么确保器将不再知道正在运行的进程。结果会导致它启动新进程,而不杀死旧的进程。
贡献和开发
我们很高兴接受拉取请求或问题。
在开发过程中,您可以通过运行composer test
来执行所有代码质量检查和测试。
未来功能
这是我们可能添加的功能。我们目前没有具体需求,但我们认识到它们的实用性,并在我们有空闲时间时添加它们。如果您或您的项目需要这些未来功能中的任何一个或多个,请提交PR或创建问题。
- 测试与Lumen的兼容性
许可和贺卡软件
此软件是开源的,并使用MIT许可。
如果您在日常开发中使用此软件,我们非常愿意收到您家乡的一张明信片。
请寄至:荷兰,卡佩勒阿恩德伊塞尔,Webparking BV,Cypresbaan 31a,2908 LT