找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2707|回复: 0

[分享] Discuz!中最高在线人数更新和存储机制详解以及如何修改最高在线人数

[复制链接]
发表于 2017-11-15 13:48:54 | 显示全部楼层 |阅读模式 来自 河南省新乡市
查看模板文件
\template\default\forum\discuz.htm
显示历史最高在线人数的代码为:
  1. {lang index_mostonlines} <strong>$onlineinfo[0]</strong> {lang on} <strong>$onlineinfo[1]</strong>.</span>  
复制代码

即 最高记录是 xx 于 YYYY-MM-DD
这里在线记录信息存储于数组$onlineinfo

那么数组$onlineinfo怎么来的呢,来看看论坛首页的业务逻辑文件:
\source\module\forum\forum_index.php
看看如下代码
  1. $onlineinfo = explode("\t", $_G['cache']['onlinerecord']);  
  2. if(empty($_G['cookie']['onlineusernum'])) {  
  3.     $onlinenum = C::app()->session->count();  
  4.     if($onlinenum > $onlineinfo[0]) {  
  5.         $onlinerecord = "$onlinenum\t".TIMES**P;  
  6.         C::t('common_setting')->update('onlinerecord', $onlinerecord);  
  7.         savecache('onlinerecord', $onlinerecord);  
  8.         $onlineinfo = array($onlinenum, TIMES**P);  
  9.     }  
  10.     dsetcookie('onlineusernum', intval($onlinenum), 300);  
  11. } else {  
  12.     $onlinenum = intval($_G['cookie']['onlineusernum']);  
  13. }  
  14. $onlineinfo[1] = dgmdate($onlineinfo[1], 'd');  
复制代码
这里首先从缓存$_G['cache']['onlinerecord']中读取数据复制给数组$onlineinfo;
然后判断当前在线人数是否超过历史最高,如果超过了则更新,注意看代码:
  1. C::t('common_setting')->update('onlinerecord', $onlinerecord);  
复制代码


由此我们看到历史最高数据存储在数据表pre_common_setting中skey='onlinerecord'
这里顺便说一下缓存数据$_G['cache']['onlinerecord']存储于数据表pre_common_syscache中cname='onlinerecord'
关于缓存的读取参考\source\function\function_core.php中的savecache和loadcache函数,这里就不再详述了;


总结一下
1、历史最高在线人数存储于数据表pre_common_setting中skey='onlinerecord';
2、discuz系统每次更新的时候会自动更新缓存$_G['cache']['onlinerecord'];
3、显示的时候直接从缓存中读取数据;
因此懂得mysql操作的朋友只需要修改数据表pre_common_setting中skey='onlinerecord'的svalue值然后在后台强制更新缓存即可达到修改历史最高在线人数的目的;

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-3-29 08:33 , Processed in 0.056926 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表