ralphjsmit/laravel-horizon-cron-supervisor

一个用于运行基于CRON管理器的Laravel Horizon的现代解决方案。

1.4.0 2024-09-10 07:37 UTC

This package is auto-updated.

Last update: 2024-09-10 07:40:22 UTC


README

laravel-horizon-cron-supervisor@2x

一个用于基于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是否活跃的代码。