Discuz提示“帖子不存在”
在Discuz中提示帖子不存在有多种可能的情况,今天遇到一种,整理如下:
现象:
1. 帖子列表显示该帖子
2. 点击帖子提示“帖子不存在”
3. forum_thread displayorder为0
4. forum_post invisible为-1
5. forum_threadmod 有限时置顶、删除操作
结论:在删除帖子前执行过限时置顶操作,限时置顶到期后,计划任务(cron_threadexpiry_hourly.php)会自动重置 displayorder字段为 0 ,导致帖子出现在列表中,但是点击提示“帖子不存在”
解决方案:最直接的是更新mysql该行记录displayorder为-1 ,因为此贴本身应该是删除状态(如果有memcache缓存,为了实时生效,需要后台内存管理里更新相应tid fid缓存)。但是最佳优化方案还是要避免次类问题发生,后面抽时间补上方案。
相关资料:
Discuz pre_forum_thread displayorder字段
Discuz pre_forum_threadmod action字段
Discuz pre_forum_post invisible字段
Discuz! X2.5 的 forum_thread 和 forum_post 表的各标记位字段对应的值的说明