• 10018阅读
  • 203回复

2016年1月15日:修正电脑版论坛统计数据主题数和帖子数误差(部分与拆分操作有关) [复制链接] [手机版]

上一主题 下一主题
离线为你守候
温馨家园,为你守候!

只看楼主 倒序阅读 使用道具 绿 楼主  发表于: 2016-01-15 18:08:00 星期五
—— 管理操作 •  本帖被 zhangjingyu 执行合并操作(2019-01-20) ——
电脑版和手机版论坛统计数据存在一定的误差,其实很早之前就发现这个问题了,只是不知道如何解决。不过,随着时间的推移,自己对论坛慢慢的多了一些了解,也渐渐的知道一些问题可能发生的原因及需要从哪里入手。当然了,能解决的问题其实也不是大问题。

修改前的电脑版统计数据为:
今日7 昨日1 最高日258 主题2015 帖子10912 会员1183 新会员美丽到家

手机版的为:
主题数: 1898
帖子数: 10795
会员数: 1183
今日帖数: 7
当前在线: 21(1会员)
最新会员: 美丽到家

注意:
2015-1898=117
10912-10795=117

也就是说,主题数和帖子数存在着一个相同的误差。

论坛的统计数据一部分是记录在一个数据表里的,有昨日、最高日、会员总数、最新会员。另外,表里还记录着最高在线人数及发生的时间。

index.php 计算方法:
$article += $o_post; //帖子数
$topics  += $o_post; //主题数
$tposts  += $o_tpost; //今日发帖数

从上面的计算方法可以看出,如果存在o_post或o_tpost的值不为零,那么与实际上的数据就会存在误差。恰好在数据表里o_post的值就是117,修改为0后,电脑版的统计数据终于恢复正常了!

2019年3月12日:初步解决个人空间留言板表情弹出框定位问题
=================分隔线====================
26楼 按是否有子版块判断显示帖子总数提示文本,即分为“总帖数(含子版):”和“帖数:”
44楼 计算主题数,回复数,帖子总数(包括子版块的主题数和回复数)的文件,require/updateforum.php
62楼 自己写的查询、记录版块帖子总数的php文件
92楼 拆分帖子后,更新源和目标版块数据(帖子总数)
98楼:
进行帖子拆分操作时,源版块和目标版块的帖子数进行自动更新,但有一个问题,那就是当这个版块是子版块时,父版块的帖子数是不会自动更新的,而这就会造成父版块的帖子数以及站点信息里面的帖子数不正确。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 置顶 (来自179楼) 发表于: 2020-09-14 23:20:08 星期一  点亮(0)
—— 管理操作 •  zhangjingyu 执行 帖内置顶 操作 (2020-09-14 23:24) ——
经过研究,思考,有新的发现,新的解决方案,确实可喜可贺。但有时候,未免过于乐观,过于自信,就像173楼所说的情况,确实客观存在。然而,按这个思路却未必能走下去。因为涉及到的不是一星半点儿,不是某一处的简单修改,而是相当大的一块,可以说是一个功能模块。

今晚大致看了下首页文件(index.htm和index.php),和站点帖子数相关的有相当一部分代码。看不懂,自然更谈不上修改。

之前自写的用来校对站点帖子数的php文件,经过近期的修改、完善,自我感觉良好。如果真的出现偏差,可以用另外一个文件修正,当然了,这只是一个野路子。在后台缓存管理里,有一个功能更新主题文章数统计,说明是“更新所有版块的主题数和文章数统计。数据转换后或前台文章数统计不正常时,可使用此功能修复”。经过测试,与我的解决方案可以说是异曲同工。我猜想,它对应的就是172楼帖子中提到的updateforum()函数。
updatecache.htm
    <form action="$basename&" method=post>
      <input type="hidden" name=action value='forum'>
      <tr class="tr1 vt">
        <td class="td1"><span class="b s1">更新主题文章数统计</span</td>
        <td class="td2"><input type="text" class="input input_wa mr5" name="percount" value="100">
          <span class="bt2"><span>
          <button type="submit" value="每批更新个数">每批更新个数</button>
          </span></span> </td>
        <td class="td2"><div class="help_a">更新所有版块的主题数和文章数统计<br/><span class="gray">数据转换后或前台文章数统计不正常时,可使用此功能修复</span></div></td>
      </tr>
    </form>


好了,就这样吧。不研究如何去修改了,也真的改不了。虽然偏差还是客观存在,但不彻底的解决方案还是有的,自己研究的,加后台提供的。

一个帖子,编辑了不下半个小时,同样的进行帖内置顶,算是对异想天开的回复吧。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 置顶 (来自173楼) 发表于: 2020-09-13 23:28:23 星期日  点亮(0)
—— 管理操作 •  zhangjingyu 执行 帖内置顶 操作 (2020-09-13 23:40) ——
假设版块a下面有b和c,也就是a是b和c的父版块,b和c是a的子版块。现在的情况是,在父版块a的版块信息里显示的帖子总数(自己修改过代码,以是否含有子版块加以判断:如果有子版块,也就是当前版块是父版块,那提示文字为“总帖数(含子版)”,否则这个版块就是一级版块,也就是没有子版块,提示文字为“帖数”。因为经过研究发现,在父版块的“帖数”里是包含所有子版块的帖子数的,所以才会尝试修改代码)的计算公式为:Sum(a)=a+b+c。

其实,在版块信息里把子版块的帖子数也计算进去(我们看到的是显示出来)并没有什么意义。就像当初,我也是经过研究才知道是这么一回事(并研究如何修改代码,以区分)。然而,这样计算,除了没有什么实际意义外,影响却是不折不扣。最主要的就是,这样很可能导致论坛帖子总数出现偏差。因为,论坛管理里的拆分操作是避免不了的,而当初的这个拆分操作并不能及时的更新版块信息里的帖子总数,后来自己添加了代码才算基本解决。也就是,当源版块减少n个帖子后,目标版块会增加n个帖子,这个帖子数的变化自己用代码实现的。

再把拆分操作放到版块b或c里。无论b或c是目标版块,还是源版块,经过自己修改过的代码后,版块信息里的帖子总数是实时变化的,也就是版块b或c,也包括对方版块的帖子总数总是正确的。然而,这个变化却无法实时反馈到父版块a的版块信息里。

不区分父版块和子版块,所有版块的帖子数都是对的,意外情况就是求和,因为有动态变化,而这个动态变化却无法如实反馈到求和的结果上。

由于客观偏差的存在,我们才会有后续的不断的努力。按照“原理”,父版块的帖子总数是包含所有子版块的。所以,我们后来在版块信息数据表里添加了新的字段benban记录当前版块的帖子数,所有版块求和,再和数据表里的数据进行对比、校对。并且专门写了如何更新这个benban字段数据的php文件,而且前两天又重新做了修改,补充,和完善。其实,细看数据表,后来添加的benban字段的数据和原表自带的记录版块帖子数的article字段基本没什么差别,因为它本身就是用来校对,对比的。除了目前三个包含子版块的父版块的数据。

其实,我们被带偏了。

就像前面说的,其实所有版块的帖子数都是对的(不区分父版块和子版块),而且在父版块把子版块的帖子数也计算进来根本就没有什么意义,而正是这个求和很可能出现意外。

那么,重新思考。不让父版块把子版块的帖子数计算进去,而是如实反应版块自身的帖子数,也就是,论坛总帖数是所有版块的帖子数之和,不就从根本上解决问题了吗?

这就是今晚想到的,其实就一点,而文字却打了不少。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 沙发  发表于: 2016-12-11 16:41:08 星期日  点亮(0)
今天本来是继续研究:
您还没有登录,不能上传附件!
在360极速浏览器的兼容模式下上传附件有问题,后来发现在相册里批量上传照片,虽然提示已经成功上传但实际上并没有真正的成功(普通上传没问题),于是添加了一个温馨提示:
提示:如果批量上传提示成功但实际照片数并未增加,请切换到普通上传,或切换浏览器模式)

又继续在日志里发现,发表新日志添加图片时,如果选择本地图片上传,也是提示“您还没有登录,不能上传附件!”(在图片列表图片缩略图的下面只能显示几个文字,显示不全,大概只能显示6个字符,),并且选择“同时保存到”相册也无法选择相册名;如果选择相册图片则会提示“相册下还没有照片,请先 上传”,让上传照片,实际上又跑到上面的批量上传/普通上传那,而不能直接“点击图片插入到帖子”。

光说不明白,还是截个图吧,可能也说不明白。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 板凳  发表于: 2016-12-11 17:09:00 星期日  点亮(0)
在测试照片上传和发表新日志后,又发现今日发帖数和帖子总数不断的变化,又经过不断的测试发现:
上传照片到相册(张数)、发表新日志(篇数)、发表新鲜事并且附加图片(张数)都会让今日发帖数和帖子总数增加。

经过查看数据表,和主帖说的一样,
  1. 如果存在o_post或o_tpost的值不为零,那么与实际上的数据就会存在误差。

在测试照片上传和发表日志时,又注意到了照片评论和日志评论的帖子编辑器,只有插入url 链接和添加表情,感觉太少了,所以决定研究下看能不能再加几个。搜索查看了N多文件(感觉查找到对应的文件还是有些难度的),经过尝试,失败。浪费了时间又没有成果。

对应的文件似乎是:
apps/photos/template/m_comment.htm
apps/diary/template/m_comment.htm
  1. <form method="POST" name="FORM" action="" onsubmit="return false;">
  2.     <div class="minieitor_pw cc">
  3.         <ul class="miniUl">
  4.             <li><a href="javascript:" title="插入url链接" class="milink_pw" onClick="createLinkBox();" id="createlinkid">插入url链接</a></li>
  5.             <li><a href="javascript:" title="添加表情" class="mishow_pw" id="td_face" onClick="showDefault();" unselectable="on">添加表情</a></li>
  6.         </ul>
  7.         <div class="minitextarea">
  8.             <textarea maxlength="200" id="comm_input_{$comment_type}_{$comment_typeid}_0" name="atc_content"></textarea>
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 地板  发表于: 2016-12-13 11:08:13 星期二  点亮(0)
操作数据表费时费力,又有风险(吓唬人的,其实细心些没事儿的),今天实际在莘祺网尝试测试,已经用php文件修正了,以后再碰到这种情况,运行下文件就可以了。轻松了吧!
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 4楼 发表于: 2018-07-30 18:10:14 星期一  点亮(0)
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 5楼 发表于: 2018-09-12 22:23:13 星期三  点亮(0)
index.htm
<li>帖子<em>$article</em></li>

index.php(关键字article,第2行查询fd.article、 pw_forumdata和第16行)
  1. if (!Perf::checkMemcache() || !$_tmpForums){
  2.     $query = $db->query("SELECT f.fid,f.name,f.type,f.childid,f.fup,f.logo,f.descrip,f.metadescrip,f.forumadmin,f.across,f.allowhtm,f.password,f.allowvisit,f.showsub,f.ifcms,fd.tpost,fd.topic,fd.article,fd.subtopic,fd.top1,fd.lastpost FROM pw_forums f LEFT JOIN pw_forumdata fd USING(fid) WHERE f.ifsub='0' AND f.ifcms!=2 $sqlwhere ORDER BY f.vieworder");
  3.     $_tmpForums = array();
  4.     while ($forums = $db->fetch_array($query)) {
  5.         $_tmpForums[$forums['fid']] = $forums;
  6.     }
  7.     !$cateid && Perf::checkMemcache() &&  $_cacheService->set('all_forums_info', $_tmpForums, 300);
  8. }
  9. foreach ($_tmpForums as $forums) {
  10.     if ($forums['type'] === 'forum') {
  11.         if ($forums['showsub'] && $forums['childid']) {
  12.             $showsub[$forums['fid']] = '';
  13.         }
  14.         $forums['topics'] = $forums['topic'] + $forums['subtopic'];
  15.         $article += $forums['article'];
  16.         $topics += $forums['topics'];
  17.         $tposts += $forums['tpost'];

$article += $o_post;
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 6楼 发表于: 2018-09-12 22:33:23 星期三  点亮(0)
现在,站点信息里主题数对,帖子总数和数据表对不起来,多2个,不知道问题在哪里?很晚了,有时间再看看。睡觉去!
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 7楼 发表于: 2018-09-13 22:29:36 星期四  点亮(0)
我觉得这个问题有必要仔细研究下。今晚不早了,只能先简单查看下数据表了。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!