A 上午十点补了两段共 200 字并保存,B 十点零五提交自己那份,A 补的内容全没了,修订列表里后一条的字数比前一条少两百。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
SELECT ID, post_author, post_date, LENGTH(post_content) AS len FROM wp_posts WHERE post_parent = 903 AND post_type = 'revision' ORDER BY post_date DESC LIMIT 6;
编辑器提交的是整段 post_content,服务端按提交内容直接覆盖,不比对 base revision。B 的页面停在 A 保存之前,提交时带着旧内容,冲突检测只在前端提示一次,关掉就继续写。这一点先确认清楚,后面就不用反复试。
「revision 覆盖冲突」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。
具体做法是,保存前先看修订列表最新一条的时间,比自己打开页面还晚就先刷新;出现占用提示时把本地内容复制出来再接管,不要直接点继续;覆盖后按字数差找那条修订,整段恢复再删掉重复部分;把自动保存间隔调到 60 秒,减少两端版本差距。
改完照着核一遍,修订列表里两次保存的字数连续增长,A 补的两段在最终正文里还在。
