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

Laravel调度任务异常:schedule:list显示错误且仅首个任务运行

Laravel调度任务问题:间隔显示错误+仅首个任务运行的解决方案

问题分析

你遇到的两个问题根源分别在于:

  1. schedule:list间隔显示错误:Laravel 8的everyTenMinutes()快捷方法可能存在缓存或解析问题,导致生成的Cron表达式不符合预期;
  2. 仅第一个任务运行:ofelia的调度频率设置错误,Laravel调度器要求每分钟执行一次schedule:run,而你设置的每5分钟执行会错过大部分任务的触发时机。

具体解决步骤

一、修复schedule:list间隔显示错误

  1. 清除所有缓存
    执行以下命令清除Laravel的配置、路由及应用缓存:
php artisan config:clear
php artisan route:clear
php artisan cache:clear

如果使用了OPcache,重启PHP-FPM服务以清除缓存的类文件。

  1. 替换快捷方法为手动Cron表达式
    放弃使用everyTenMinutes(),直接指定正确的Cron表达式*/10 * * * *(每10分钟执行一次),修改Kernel类的schedule方法:
protected function schedule(Schedule $schedule)
{
    $schedule->command('socialReviews:refreshGoogleToken')->everyMinute();
    // 替换everyTenMinutes为手动cron表达式
    $schedule->command('socialReviews:retrieveGoogle')->cron('*/10 * * * *');
    $schedule->command('socialReviews:retrieveFacebook')->cron('*/10 * * * *');
}

修改后再次执行php artisan schedule:list,检查Interval列是否显示为*/10 * * * *。

二、修复仅首个任务运行的问题

修改ofelia的调度规则,将schedule:run的执行频率改为每分钟一次。因为Laravel的调度器需要每分钟运行一次schedule:run,才能逐个检查所有任务是否到达执行时间。

调整后的ofelia任务配置类似:

[job]
command = "php /var/www/artisan schedule:run >> /dev/null 2>&1"
schedule = "* * * * *"

额外排查步骤

  1. 验证命令本身可用性
    手动执行后两个任务,确认命令没有报错:
php artisan socialReviews:retrieveGoogle
php artisan socialReviews:retrieveFacebook
  1. 查看Laravel日志
    检查storage/logs/laravel.log文件,确认后两个任务是否有执行记录或错误信息。

内容的提问来源于stack exchange,提问作者Tiago Gouvêa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:52:30