UPDATE wp_commentmeta SET meta_value = meta_value + 1
WHERE comment_id = 482 AND meta_key = 'like_count';

点一次赞数字加一,刷新后又变回零,连续点十次最后还是零,数据库里的 meta 值看着确实写进去了。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:计数读的是缓存里的旧值,写入只更新了 meta 没清缓存。前台每次点赞都先读再写,并发下后写的把前面的覆盖掉。未登录用户按 IP 或 Cookie 去重时,键值也算错了。

围绕「评论点赞数」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。同一份配置存在多处的,先确认改的是被加载的那一份。

新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

处理上按这个顺序:把读改写换成一条 UPDATE 自增语句,别在 PHP 里先查再加;写入后立刻清掉这条评论的缓存,键名和读取处保持一致;点赞前先查重,同一用户对同一条评论只允许一次,重复请求直接返回当前数。

确认没问题再收工,连点多次数字只加一次,刷新后仍是新值,不清缓存也不回退。

作者 9823189