找回密码
 立即注册
搜索
查看: 351|回复: 4

关于帖子楼层编号的问题

[复制链接]

7

主题

283

回帖

878

积分

热带风暴

积分
878
发表于 2025-7-19 13:33 | 显示全部楼层 |阅读模式
我在“楼上问楼下问题”那个帖子里发现了一个奇怪的现象,就是同一个楼层编号对应的内容有时候突然变了,换句话说同一个内容的楼层编号也会发生变化。所以有的时候那个帖子里“楼下回答x楼的问题”经常出现偏差,一个人看x楼是这个内容,另一个人看x楼就是另一个内容,甚至同一个人不同的时间看,相同楼层编号的内容也可能变化了。请问有没有人知道这是什么原因造成的?
发表于 2025-7-20 01:00 | 显示全部楼层
这应该是Discuz!系统的一个bug,它会出现在楼层数较多出现过删帖的主题帖中

根据Discuz!系统的特性,如果删除了某个帖子的5楼,那么原来的6楼就会变成5楼,7楼就会变成6楼,以此类推,也就是说正常情况下一个帖子内的楼层一定是连续的

但是,Discuz!系统在统计楼层数较多的主题帖时,有时候会把被删除的楼层也统计进去,如果进入被删除楼层的那一页又会恢复正常,这就会导致你所说的情况

例如,假设某个主题帖现在有1000楼,然后删除此帖的第15楼,还剩999楼;在某种情况下,Discuz!系统会错误地把被删除的这一楼重新统计进去,此时如果你点到该主题帖的最后一页,就会发现此帖有1000楼(但实际上只有999楼),然后如果再点到该主题帖的第2页(即被删除楼层的那一页),系统就又会恢复正常,接下来点到该主题帖的最后一页时,最后一个楼层就会恢复为999楼;恢复之后,在某种机缘巧合之下,Discuz!系统又会错误地把被删除的这一楼重新统计进去,周而复始

PS:这个bug应该有十年以上了,但是因为涉及到底层逻辑,一直无法彻底解决
也正是因为如此,我会尽量少删除回帖(尤其是在楼层数较多的主题帖中),以减少此bug触发
惟愿公平如滚滚流水,而正义则像永不止息的溪流。

72

主题

826

回帖

3066

积分

管理员-厄尔尼诺

积分
3066
QQ
发表于 2025-7-20 20:11 | 显示全部楼层
红豆棒冰冰 发表于 2025-7-20 01:00
这应该是Discuz!系统的一个bug,它会出现在楼层数较多且出现过删帖的主题帖中

根据Discuz!系统的特性,如 ...

我去看了一下,这个问题的本质其实是缓存更新的问题
楼层本质上是数据库的position这一栏的数值
在发帖时,新的贴的pid就是position的最大值+1没有任何问题
但是当删帖后,他不会触发让系统立即去更新这个贴里全部回复的position,因此这个时候就会出现缺楼的情况,直到缓存更新,把后面的全部都-1,就又连续了,这个时候楼层数就变了
在discuz系统里是从来不会使用到position这一项的,指定一个帖子只有tid,pid两个值,因此回复永远不会出问题
解决办法也很简单,可以不删除,而是改为屏蔽

评分

参与人数 1威望 +1 收起 理由
红豆棒冰冰 + 1 优秀帖

查看全部评分

7

主题

283

回帖

878

积分

热带风暴

积分
878
 楼主| 发表于 2025-7-22 00:03 | 显示全部楼层
红豆棒冰冰 发表于 2025-7-20 01:00
这应该是Discuz!系统的一个bug,它会出现在楼层数较多且出现过删帖的主题帖中

根据Discuz!系统的特性,如 ...

感谢解答!

7

主题

283

回帖

878

积分

热带风暴

积分
878
 楼主| 发表于 2025-7-22 00:03 | 显示全部楼层
xiaoqianWX 发表于 2025-7-20 20:11
我去看了一下,这个问题的本质其实是缓存更新的问题
楼层本质上是数据库的position这一栏的数值
在发帖时 ...

感谢解答!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|TY_Board论坛

GMT+8, 2025-8-21 12:12 , Processed in 0.055833 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表