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

编程之家收集整理的这篇文章主要介绍了【Discuz】主题浏览量实现原理和不更新的解决方案编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文主要内容

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

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

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

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

问题还原

这这页面主题页面

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

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

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

photo_2020-04-30_10-08-08.jpg

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

photo_2020-04-30_10-13-48.jpg

排查步骤

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

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

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

photo_2020-04-30_10-21-10.jpg

追溯浏览量实现的原理

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

photo_2020-04-30_11-08-57.jpg

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

这段代码执行的步骤

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

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

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

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

  • 这就是基本的实现流程

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

photo_2020-04-30_11-13-33.jpg

总结

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

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

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

photo_2020-04-30_11-28-39.jpg

以上就是Discuz主题浏览量实现原理和不更新的解决方案的详细内容,更多请关注PHP中文网其它相关文章

博主微信欢迎交流

总结

以上是编程之家为你收集整理的【Discuz】主题浏览量实现原理和不更新的解决方案全部内容,希望文章能够帮你解决【Discuz】主题浏览量实现原理和不更新的解决方案所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢寻找一群志同道合、互帮互助的学习伙伴,可以点击下方链接加入:
编程之家官方1群
编程之家官方2群
编程之家官方3群
编程之家官方4群

相关文章

猜你在找的Discuz相关文章

最近在使用discuz这个老大哥然后写点自己在discuz的使用经验本篇文章主要实现去除注册时的邮箱验证实现效果 :去除注册时的邮箱限制实现步骤前端页面处理1.在自己的项目目录找到discusuploadtemplatedefaulttouchmember里边的register这个文件2.删除151行代码3.查看效果4.测试结果:是可以直接注册成功的,这...
本篇文章主要实现去除论坛底部的几个版本实现步骤其实这个一点都不难这个估计是程序员的都会卡在这里吧!我们打开模板文件发现里边有个mobile 这个时候我估计大多数人都跟我一样 直奔mobile去了打开upload/template/default/touch/common/footer.htm文件我个人是全部删除了,根据你们的也许需求哈实现效果博主微信欢迎交流...
本文实现功能:将主题标题和主题内容同时显示出来如想直接看项目实现结果可直接看解决问题的那个标题下的内容项目需求这是原始移动端的页面布局这是需要实现的效果发现问题在原始的uploadtemplatedefaulttouchforumviewthread.htm这个文件中我们可以看到标题跟内容是分开显示的,最终用的还是$_G[forum_thread][subject]这...
本文主要内容:解决Discuz主题浏览量不发生变化或者跟这回复帖子的数量一起变化如果你是新手discuz开发人员可以从头查看文章如果你是一个站长直接看文章底部总结即可更多文章尽在专栏:Discuz专栏问题还原这这页面为主题页面上面红框为主题的浏览量使用的是$_G[forum_thread][views]下面全部回复为回帖数量使用的是$_G[forum_threa...
本文实现功能:1.从原有系统进入论坛自动登录和注册2.实现弹框在本页面,不进行跳转3.js在页面加载时直接发起注册请求这个功能之前使用的uc_user_register这个函数来处理的,但是今天在开发用户空间时就会出现问题。项目需求在我们原有的系统上添加一个论坛,但是用户信息需要共享。实现方法:在进入论坛时带上原有系统的用户信息,然后论坛那边拿到信息直接注册即可。从原有系统进入...
本文实现功能: 开发移动端关注页面 开发移动端粉丝页面 实现从自己空间看见的关注列表都显示已关注 实现自己看其他人关注列表时 自己关注的用户显示已关注 自己未关注的用户显示关注 解决如何在PHP文件里边显示移动端页面 前期准备:解决PHP文件里边显示移动端页面在discuz中移动端是没有粉丝,关注页面的,那么就需要我们来开发。以下就是开发流程。discuz中pc端是有收听和听众的功能。如下图home.php?mod=follow&am...
本文实现功能:1.关注和取消关注用户2. 判断与用户之间的关注关系实现效果点击关注后显示已关注,取消关注后显示关注ta实现方案用户空间的入口是home.php文件,所以我们需要先从home.php这个文件入手打开文件home.php文件的29行可以看到使用in_array进行了一次判断,主要注重space和spacecp这俩个模块我们先认识俩个单词:space(空间) 和 spacecp(翻译过来是太空计划)然后我们需要打开discuz原来的默认模板(这个.
本文实现功能:控制弹框的显示与否功能使用场景在之前的一篇文章写道,discuz实现自动注册登录。但是我们又不想让那个提示信息出来。在网上大概的搜索了一下,有的说后台可以设置,但是咔咔到后边瞅了一眼,它那个设置只是针对于固定的一些场景。那么我们自己可以来写一个适合我们项目的显示方式弹框实现剖析使用discuz一段时间的都知道,前台的弹框其实就是后台showmessage这个方法决定的。我们用代码追踪到这个方法在upload/source/function/function_.
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注