温馨提示×

laravel linux如何做定时

小樊
44
2026-10-01 07:25:09
栏目: 智能运维

在 Linux 上使用 Laravel 做定时任务,核心就是:Linux 的 crontab + Laravel 的调度器(Task Scheduling)。

下面一步一步来。


一、Laravel 中定义定时任务

1. 在 routes/console.php 或 app/Console/Kernel.php 中定义

推荐方式( Laravel 8+ 常用):在 routes/console.php

use Illuminate\Support\Facades\Schedule;

Schedule::command('emails:send')->daily();

或者在 app/Console/Kernel.php 的 schedule() 方法中(旧写法):

protected function schedule(Schedule $schedule)
{
    $schedule->command('emails:send')->daily();
}

2. 常见调度频率

->everyMinute();
->everyFiveMinutes();
->hourly();
->daily();
->weekly();
->monthly();
->dailyAt('13:30');

二、Linux 中配置 crontab(关键)

1. 编辑 crontab

crontab -e

2. 添加一行(只需要一条)

* * * * * cd /path/to/your/project && php artisan schedule:run >> /dev/null 2>&1

说明:

  • * * * * *:每分钟执行一次
  • schedule:run 会判断是否到时间执行 Laravel 的任务
  • /path/to/your/project 换成你的 Laravel 根目录

✅ 只需要这一条 crontab,不需要每个任务写一条


三、查看与调试

1. 查看已注册任务

php artisan schedule:list

2. 手动执行一次

php artisan schedule:run

3. 查看日志

storage/logs/laravel.log

四、常见问题

1. 权限问题

确保:

  • PHP 可执行
  • crontab 用户有项目权限
  • storage 可写

2. 环境变量

crontab 环境很少,建议写全路径:

* * * * * /usr/bin/php /var/www/laravel/artisan schedule:run

3. 时区问题

在 .env 中设置:

APP_TIMEZONE=Asia/Shanghai

五、示例(完整)

* * * * * cd /var/www/laravel && php artisan schedule:run >> /var/log/laravel-schedule.log 2>&1

如果你愿意,可以告诉我:

  • Laravel 版本
  • 用的是 服务器 / Docker / 宝塔
  • 想定时做什么(发邮件、备份、爬虫等)

我可以给你完全对应的配置示例。

0 踩