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

Laravel Schedule定时任务:如何配置工作日指定时段每2小时执行

问题根因
  1. Laravel的between()方法属于运行时校验规则,不会修改最终生成的Cron表达式,只会在任务触发时校验当前时间是否符合区间要求,不符合就直接跳过执行。你在任务列表看到的00:00是Cron层面的触发时间,实际到点后不会执行业务代码。
  2. everyTwoHours()默认生成的Cron规则是0 */2 * * *,即从0点开始每2小时触发一次,weekdays()仅限定工作日触发,不会调整小时的起始计数点。
可选解决方案

方案1:无需修改代码,忽略Cron显示误差

你现有的代码逻辑本身是符合要求的,between('7:59', '18:01')会自动过滤掉0点、2点等非目标时段的触发请求,不会实际执行业务逻辑,只是任务列表的下一次执行时间显示不符合预期而已,不影响正常使用。

方案2:手动指定Cron表达式(推荐,显示与执行完全一致)

直接通过cron()方法写原生Cron规则,完全匹配你的需求,也不会出现显示误差:

$schedule->call('App\Http\Controllers\Controller@function')->cron('0 8,10,12,14,16,18 * * 1-5');

该Cron规则的含义为:每周一到周五的8、10、12、14、16、18点的0分执行,完全覆盖你要的「工作日8点到18点每2小时执行一次」的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:48:02