3、分析模板文件代码,可知变量$onlineinfo[0]是最高记录,$onlineinfo[1]是最高记录的时间,根据变量全局搜到
\source\module\forum\forum_index.php这个文件,发现$onlineinfo就是在这里定义的,摘出157-170行并分析如下:
- $onlineinfo = explode("\t", $_G['cache']['onlinerecord']);
- //读取缓存中的最高记录和时间并写在数组$onlineinfo 中
- if(empty($_G['cookie']['onlineusernum'])) {
- //判断在线用户数量的cookie是否为空,如果为空就运行下面的程序
- $onlinenum = DB::result_first("SELECT count(*) FROM ".DB::table('common_session'));
- //搜出session表此时的在线记录数量
- if($onlinenum > $onlineinfo[0]) {
- //如果此时在线记录数量高于 最高纪录
- $onlinerecord = "$onlinenum\t".TIMESTAMP;
- //定义字符串$onlinerecord 为最高纪录加此时的时间
- DB::query("UPDATE ".DB::table('common_setting')." SET svalue='$onlinerecord' WHERE skey='onlinerecord'");
- //更新数据库表最高纪录的svalue值
- save_syscache('onlinerecord', $onlinerecord);
- //保存缓存数据到'onlinerecord'中
- $onlineinfo = array($onlinenum, TIMESTAMP);
- //重新定义数组$onlineinfo
- }
- dsetcookie('onlineusernum', intval($onlinenum), 300);
- //重新设置cookie的'onlineusernum'值
- } else {
- $onlinenum = intval($_G['cookie']['onlineusernum']);
- //如果在线用户数量的cookie存在,就读取cookie值
- }
- $onlineinfo[1] = dgmdate($onlineinfo[1], 'd');
- //格式化最高纪录时的时间格式是“2011-9-28”