define('DISABLE_WP_CRON', true);
# 需要时再 wp cron event run --due-now

测试站验证发券逻辑,计划任务每分钟跑一次,两小时后生产队列里多出 800 条发券任务,客服接到用户反馈账户里凭空多了券。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,测试站的计划任务和生产共用一套队列和 Redis,任务没有环境标记。测试站没人盯着,任务就一直按分钟触发。

「测试站定时任务」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。

处理上按这个顺序:测试站关掉真实队列,改用本地同步驱动;队列名或消息体加环境字段,消费端先过滤;计划任务在测试站改成手动触发,别挂系统定时;上线前检查测试环境有没有仍在运行的任务。

改完只确认一件事:测试站跑完发券流程后生产队列长度不变,用户账户没有新增券记录。

作者 9823189