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

Laravel 10中everySecond等亚分钟调度方法无法正常使用求助

Laravel 10 秒级调度报错的解决办法

你遇到的问题核心在于:Laravel 10 并不支持everySecond()、everyTwoSeconds()这类亚分钟调度方法——这些方法是Laravel 11才新增的特性,你可能误看了更高版本的官方文档。

解决思路

方法1:任务内循环实现秒级执行

利用Laravel原生的分钟级调度,在任务内部通过循环+休眠来模拟秒级间隔。比如要每2秒执行一次业务逻辑:

修改StrategicTest1的handle方法:

public function handle(): void
{
    // 每分钟执行30次(60/2=30),每次间隔2秒
    for ($i = 0; $i < 30; $i++) {
        // 你的业务逻辑
        $st = Stretegy::find(1);
        $st->comment1 = random_int(1, 400);
        $st->code = 'st testing'.random_int(1, 400);
        $st->save();

        // 休眠2秒,控制执行间隔
        sleep(2);
    }
}

调度代码保持分钟级即可:

protected function schedule(Schedule $schedule): void 
{ 
    $schedule->job(new StrategicTest1)->everyMinute(); 
}

方法2:使用第三方扩展包

可以用spatie/laravel-short-schedule扩展包,它专门为Laravel提供亚分钟级调度支持,安装后就能用类似everySecond()的语法:

  1. 安装包:
composer require spatie/laravel-short-schedule
  1. 发布配置文件(可选):
php artisan vendor:publish --provider="Spatie\ShortSchedule\ShortScheduleServiceProvider"
  1. 修改调度代码:
protected function schedule(Schedule $schedule): void 
{ 
    $schedule->job(new StrategicTest1)->everySeconds(2);
}

方法3:升级到Laravel 11

如果项目允许升级,直接升级到Laravel 11,就能原生支持everySecond()、everyTwoSeconds()等方法,无需额外配置。

内容的提问来源于stack exchange,提问作者DAVID AJAYI

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:56:14