crontab.xml写的是 * * * * *,业务表里却常隔五六分钟才更新一次。cron_schedule里能看到一些missed。问题不在表达式,而是系统级bin/magento cron:run只每五分钟启动一次,或这个group的调度窗口太短。
crontab -l bin/magento cron:run --group=default SELECT job_code,status,scheduled_at,executed_at,finished_at,messages FROM cron_schedule WHERE job_code='vendor_job' ORDER BY schedule_id DESC LIMIT 30;
再查cron_groups.xml里的schedule_generate_every、schedule_ahead_for、schedule_lifetime和use_separate_process。单独进程组需要系统crontab实际触发对应group,不能只配置XML就以为会自己跑。
任务本身超过一分钟怎么办
每分钟启动不等于允许并发。任务先拿业务锁,上一轮未完成就安全退出;或者把工作拆成队列。不要依赖cron_schedule的pending状态当唯一锁,多节点Cron下仍可能竞态。
修复后观察一小时,不仅看success数量,还要看executed_at与scheduled_at的延迟、单次耗时和重复执行。

