自定义任务由模块的 etc/crontab.xml 声明:
<group id="default">
<job name="alwayly_sync_pending"
instance="Alwayly\Sync\Cron\ProcessPending" method="execute">
<schedule>*/15 * * * *</schedule>
</job>
</group>
执行类应通过构造函数注入业务服务,不要直接使用 Object Manager。一次只处理有限批次,例如 $this->processor->processBatch(100);。
Cron 可能超时重跑,也可能在多节点同时触发。处理订单、库存或外部接口时,应以状态字段、唯一键或锁保证幂等。部署后确认系统 crontab 已调用 Magento,再查看 cron_schedule 中该 job code 的 pending、running、success 和 error。
开发环境连续运行两次 bin/magento cron:run --group=default,通常第一次生成计划,后续运行执行到期任务。上线前可人为制造一次失败,确认日志能定位批次,且重跑不会重复处理成功数据。

