首页IT科技discuz默认版块主题论坛发帖(Discuz主题浏览量实现原理和不更新的解决方案)

discuz默认版块主题论坛发帖(Discuz主题浏览量实现原理和不更新的解决方案)

时间2025-06-13 12:58:18分类IT科技浏览6817
导读:本文主要内容:...

本文主要内容:

解决Discuz主题浏览量不发生变化或者跟这回复帖子的数量一起变化

如果你是新手discuz开发人员可以从头查看文章

如果你是一个站长直接看文章底部总结即可

更多文章尽在专栏:Discuz专栏

问题还原

这这页面为主题页面

上面红框为主题的浏览量使用的是$_G[forum_thread]677 次浏览

下面全部回复为回帖数量使用的是$_G[forum_thread][replies]

然而我们刷新页面时浏览量并不会增加              ,但是我们在主题回复一个帖子时浏览量就会增加

那我们在测试一下                    ,新增一个回帖       ,会发现确实如此哈!但是问题不是那么简单       ,请继续看下文

排查步骤

第一步:我们需要确认浏览量跟回帖量是不是这俩个字段

第二步:我们需要追溯浏览量增加的原理

那么下来咱们来排查第一个问题:打开数据库字典查看pre_forum_thread 表                    ,那么我们就确定了我们在源码里使用的变量是正确的

追溯浏览量实现的原理

在代码的986行             ,我们就解决了我们的第一个问题       ,那就是为什么浏览量跟回帖量的数据是一样的                     ,这是因为在这里做了一个判断              。如果回复贴的数量大于主题浏览量时             ,会让浏览量跟回帖量相等

然后继续寻找更新主题浏览量的代码:在1054行里有viewthread_updateviews这个方法,根据字面意思我们都能理解这个方法是干嘛的                     ,主题更新浏览量的                    。

这段代码执行的步骤

先回判断后台是否开启了优化主题浏览量优化功能

然后判断全局变量里边addviews这个的值

如果这个值小于100就会把数据更新到pre_forum_threadaddviews这个表

如果当addviews这个值大于100时就会清空此专题的浏览量                    ,然后会把这个数据存进pre_forum_thread 主题表的views字段

这就是基本的实现流程

在上述中,我们发现了浏览量是不会直接存入主题表的              ,这样做的好处就是防止频繁更新主题表                    ,防止锁表

总结

到了这里我想该明白的也都明白了       ,关于主题浏览量不增加的原因其实都是后台控制的              ,因为在上段代码中的第一行就可以看到这个preventrefresh值是控制是否开启优化主题浏览量的

只要根据咔咔这样配置就可以了       。

但是作为开发者来说对一个功能点的实现必须追溯源码                    ,只有这样才可以不断提升自己       。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
少儿python和成人python的区别(phpcms v9游客无法上传图片怎么办) vps怎么连接外网(国内vps连不上怎么解决)