温馨提示×

centos laravel如何做定时

小樊
50
2026-09-24 03:02:10
栏目: 智能运维

在 CentOS 上使用 Laravel 做定时任务,标准做法是:使用 Linux 的 crontab 每分钟调用 Laravel 的调度器。

下面一步步说明。


一、Laravel 定时任务原理

Laravel 本身不直接管 cron,而是:

  • 你在 app/Console/Kernel.php 里定义任务
  • 系统 crontab 每分钟执行一次
    php artisan schedule:run
    
  • Laravel 自己判断是否该执行某个任务

二、编写 Laravel 定时任务

1. 创建命令(示例)

php artisan make:command TestTask

编辑:

app/Console/Commands/TestTask.php
protected $signature = 'test:task';

public function handle()
{
    \Log::info('定时任务执行了 '.now());
}

2. 注册调度任务

编辑:

app/Console/Kernel.php
protected function schedule(Schedule $schedule)
{
    $schedule->command('test:task')
             ->everyMinute(); // 每分钟
}

常见时间:

->everyMinute()
->everyFiveMinutes()
->hourly()
->daily()
->dailyAt('02:00')
->weekly()

三、CentOS 配置 crontab

1. 编辑 crontab

crontab -e

2. 添加一行(重点)

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

示例:

* * * * * cd /var/www/laravel && php artisan schedule:run >> /dev/null 2>&1

⚠️ 必须用 项目根目录 ⚠️ php 最好写绝对路径,如 /usr/bin/php


四、确保环境正常

1. PHP 可用

which php

2. 权限问题

chown -R www:www storage
chmod -R 755 storage

3. 查看日志

tail -f storage/logs/laravel.log

五、调试技巧

手动执行(测试用)

php artisan schedule:run

查看所有命令

php artisan list

六、常见问题

❌ 定时没执行
✅ crontab 用户不对(用 crontab -l 检查)

❌ 时间不对
✅ CentOS 时区 & PHP 时区要一致

date

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

  • CentOS 版本(7 / 8 / Stream)
  • PHP 版本
  • Laravel 版本

我可以给你 完全贴合你服务器的配置示例。

0 踩