Discuz主题浏览量实现原理和不更新的解决方案

作者 : OO资源中心 发布时间: 2020-05-11 文章热度:963 共925个字,阅读需3分钟。 本文内容有更新 字体:

目 录

本文主要内容:

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

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

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

更多文章尽在专栏:

问题还原

这这页面为主题页面

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

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

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

Discuz主题浏览量实现原理和不更新的解决方案插图

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

Discuz主题浏览量实现原理和不更新的解决方案插图(1)

排查步骤

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

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

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

Discuz主题浏览量实现原理和不更新的解决方案插图(2)

追溯浏览量实现的原理

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

Discuz主题浏览量实现原理和不更新的解决方案插图(3)

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

这段代码执行的步骤

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

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

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

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

  • 这就是基本的实现流程

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

Discuz主题浏览量实现原理和不更新的解决方案插图(4)

总结

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

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

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

Discuz主题浏览量实现原理和不更新的解决方案插图(5)


关注微信公众号『OOINK』

第一时间了解最新资源动态关注OO.INK不迷路~

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
下载资源需要解压密码,解压密码是什么?
如下载的资源需要解压密码,请查看下载页右侧查找解压密码;
如没有解压密码请尝试默认解压密码:www.oo.ink 或者 oo.ink
或者联系我们获取解压密码!
1、本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2、分享目的仅供大家学习和交流,请不要用于商业用途!
3、本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
4、如有链接无法下载、失效或广告,请联系管理员处理!
5、本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!

OO.INK资源网 » Discuz主题浏览量实现原理和不更新的解决方案
+已在风雨中度过
为兴趣而改变,为梦想而努力!
+已坚持更新
时时更新,确保最新~

开通SVIP,畅享全站资源下载~

立即了解