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
相关产品推荐
相关产品推荐

