后台把一条评论的错字改掉,前台显示的时间还是三天前,按时间排序时它仍排在原位,缓存清了也一样。日志里能对上时间点,这种反而好排。

更新评论时只写了 comment_content,comment_date 和 comment_date_gmt 都保持原值。按时间显示和排序读的就是这两个字段,不改时间就分不出前后。GMT 与本地时间差八小时,只改一个还会错位。这一点先确认清楚,后面就不用反复试。

UPDATE wp_comments SET comment_date = NOW(),
  comment_date_gmt = UTC_TIMESTAMP()
WHERE comment_ID = 518;

「评论修改时间」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。

改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。

处理上按这个顺序:更新时同时写 comment_date 和 comment_date_gmt,两个字段保持八小时差;排序字段统一用 comment_date_gmt,别用本地时间,跨时区会乱;历史数据按发布时间重算一次,改前备份 wp_comments 表。

结果对不对很好判断,编辑后前台时间变成当前时刻,按时间排序也移到正确位置。

作者 9823189