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

Laravel 11中激活自定义Artisan命令并设置定时执行方法

Laravel 11 自定义命令激活与定时执行配置

一、命令自动激活(无需手动注册)

Laravel 11 会自动扫描并注册App\Console\Commands目录下的所有自定义命令,你创建的expiration命令已经可以直接使用。

测试命令是否可用:

php artisan user:expiration

二、配置定时执行周期

Laravel 11 移除了旧版本的Console/Kernel.php,现在有两种方式配置定时任务:

方式1:在bootstrap/app.php中直接定义

打开项目根目录下的bootstrap/app.php,在return $app;之前添加以下代码:

use Illuminate\Support\Facades\Schedule;

// 配置每5分钟执行一次user:expiration命令
Schedule::command('user:expiration')->everyFiveMinutes();

方式2:恢复传统Kernel.php方式(可选)

如果你习惯旧版本的配置逻辑,可以手动创建app/Console/Kernel.php文件,内容如下:

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    protected function schedule(Schedule $schedule)
    {
        // 配置任务执行周期
        $schedule->command('user:expiration')->everyFiveMinutes();
    }
}

Laravel 会自动识别该文件,无需额外配置。

三、修复命令代码中的错误

你的handle方法里的update调用参数格式有误,会导致执行报错,修正后代码如下:

public function handle()
{
    // 修正update方法的参数为数组格式
    User::where('expiration', 0)->update(['expiration' => 1]);
}

四、启动定时任务守护进程

要让定时任务生效,需要启动Laravel的任务调度器守护进程:

php artisan schedule:work

生产环境建议使用Supervisor等工具保证进程持续运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 07:54:54