You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8 如何自定义Artisan命令为维护模式新增调用参数

Laravel自定义维护模式Artisan命令新增参数实现方案

1. 创建自定义命令继承原生Down类

Laravel 自带的down命令由Illuminate\Foundation\Console\DownCommand类提供,首先生成自定义命令文件:

php artisan make:command CustomDownCommand

修改生成的app/Console/Commands/CustomDownCommand.php文件内容:

<?php

namespace App\Console\Commands;

use Illuminate\Foundation\Console\DownCommand as BaseDownCommand;

class CustomDownCommand extends BaseDownCommand
{
    /**
     * 命令签名:保留原生所有参数,新增自定义--time参数
     * 
     * @var string
     */
    protected $signature = 'down
        {--secret= : 绕过维护模式的访问密钥}
        {--time= : 自定义维护模式预计持续时长,单位:分钟}
        {--redirect= : 重定向目标路径}
        {--retry= : Retry-After响应头值}
        {--refresh= : 页面自动刷新间隔,单位:秒}
        {--status= : 维护模式响应状态码}
        {--render= : 维护页面模板路径}';

    /**
     * 命令描述
     *
     * @var string
     */
    protected $description = '启用应用维护模式,支持自定义持续时长参数';

    /**
     * 执行命令逻辑
     *
     * @return int
     */
    public function handle()
    {
        // 执行原生维护模式基础逻辑
        parent::handle();

        // 处理自定义--time参数
        if ($this->option('time')) {
            // 示例:将预计恢复时间存入缓存,可在维护页读取展示
            cache()->put('maintenance_end_time', now()->addMinutes($this->option('time')));
            $this->info("维护模式预计持续时长已设置:{$this->option('time')} 分钟");
        }

        return 0;
    }
}

注:--secret为Laravel原生自带参数,上述实现仅新增自定义的--time参数,完全兼容框架原生维护模式的所有特性

2. 替换框架默认命令绑定

打开app/Providers/AppServiceProvider.php,在register方法中添加绑定替换逻辑:

public function register()
{
    // 用自定义命令替换框架原生的down命令
    $this->app->extend('command.down', function () {
        return new \App\Console\Commands\CustomDownCommand;
    });
}

3. 测试命令调用

配置完成后即可直接运行你需要的命令:

php artisan down --secret=maintenanceSecret --time=10

可选配套处理:退出维护模式时清理缓存

如果需要在执行php artisan up时自动清理存储的维护时长数据,可以同理重写UpCommand,在其handle方法中加入缓存清理代码:

cache()->forget('maintenance_end_time');

内容的提问来源于stack exchange,提问作者sajjad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:12:02