在 Linux 上使用 Laravel 定时任务,核心就是利用 Linux 的 crontab 去每分钟调用 Laravel 的 任务调度器,然后由 Laravel 自己管理具体任务。
下面一步一步来:
可以在 routes/console.php 或 app/Console/Kernel.php 中定义。
routes/console.php(简单)use Illuminate\Support\Facades\Schedule;
Schedule::command('inspire')->hourly();
app/Console/Kernel.php(推荐)protected function schedule(Schedule $schedule)
{
$schedule->command('emails:send')->dailyAt('09:00');
$schedule->call(function () {
// 自定义逻辑
})->everyFiveMinutes();
}
crontab -e
* * * * * cd /path/to/your/project && php artisan schedule:run >> /dev/null 2>&1
示例:
* * * * * cd /var/www/laravel && php artisan schedule:run >> /dev/null 2>&1
✅ 含义:
->everyMinute();
->everyFiveMinutes();
->hourly();
->daily();
->dailyAt('13:30');
->weekly();
->monthly();
->cron('0 0 * * 0');
php artisan schedule:run
php artisan schedule:list
crontab -l
检查:
which php)✅ 推荐写法(指定 php 路径):
* * * * * /usr/bin/php /var/www/laravel/artisan schedule:run >> /dev/null 2>&1
如果是 队列任务,建议配合 supervisor 使用。
如果你愿意,可以告诉我:
我可以给你定制示例。