ralphjsmit / laravel-horizon-cron-supervisor
一个用于运行基于CRON管理器的Laravel Horizon的现代解决方案。
1.4.0
2024-09-10 07:37 UTC
Requires
- illuminate/contracts: ^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^6.0|^7.0|^8.0|^9.0
- phpunit/phpunit: ^9.5|^10.0
README
一个用于基于CRON管理器的Laravel Horizon的现代解决方案
在无需Supervisor的情况下,在低成本的托管环境中运行Laravel Horizon🤑
此Laravel包会自动每三分钟检查一次您的Laravel Horizon实例是否仍在运行。因此,它是通常推荐的Supervisor进程控制系统的完美替代品,后者需要您自己的服务器。
此包允许在无法安装Supervisor的共享托管实例和服务器上运行Laravel Horizon。
在底层,该包会自动安排一个每三分钟运行一次的简单Artisan命令,检查Horizon是否仍在运行。如果未运行,它将重新启动Horizon队列。
安装
运行以下命令安装包
composer require ralphjsmit/laravel-horizon-cron-supervisor
该包无需任何配置即可工作。请注意,您需要正确配置Laravel Scheduler。
发布配置文件
您可以选择发布配置文件或直接使用环境变量。
php artisan vendor:publish --tag="horizon-cron-supervisor-config"
配置文件内容。
<?php return [ /** * Enables Horizon Cron Supervisor */ 'enabled' => env('HORIZON_CRON_SUPERVISOR_ENABLED', true), /** * Run every X minutes or define a cron expression like "0,20,40 * * * *" */ 'schedule' => env('HORIZON_CRON_SUPERVISOR_SCHEDULE', 3), ];
新部署如何工作?
当您部署应用程序的新版本时,您通常会关闭队列和Horizon实例,以便它们可以使用文件。当您的应用程序处于维护模式
(php artisan down
)时,Laravel Scheduler不会运行任何命令。因此,只要您的应用程序处于维护模式,您就无需担心该包在您不希望的情况下重新启动队列。
一个典型的部署工作流程可能如下所示
# Prepare deployment php artisan down php artisan horizon:terminate # Do deployment logic # Horizon will not be restarted until you put the application out of maintenance mode php artisan horizon php artisan up # Finish up deployment
请注意,此工作流程被大大简化,并没有考虑您服务器或运行迁移等特定命令的具体内容。
关于包
此包由Ralph J. Smit创建。访问我的网站ralphjsmit.com获取Laravel和开发相关教程。
该包受到了这个StackOverflow问题和我的需求的启发。特别感谢ahoffman在运行和检查Horizon是否活跃的代码。