Discuz教程网

Discuz X2在线时间不更新和部分用户刷在线时间的问题

[复制链接]
authicon dly 发表于 2012-10-6 18:22:07 | 显示全部楼层 |阅读模式
论坛上出现了许多站点的用户在线时间,
或者在线用户的列表出现错误数据。(针对X2版本)

看一下模板文件footer.htm中的是否有一条语句<!--{eval updatesession();}-->,这个函数在作怪。
1.解决在线时间不更新的问题
第1步.检查模板
可能的原因是当前模板下footer.htm没有包含<!--{eval updatesession();}-->语句。
可以选择手动在footer.htm中添加,或者用原foot.htm覆盖当前footer.htm文件。
第2步.修改文件
如果站点某些活跃用户出现在在线时间不更新的情况。为了不影响设计逻辑,照以下修改updatesession()函数:
找到function_core.php的第66行附近
  1. if($_G['uid'] && TIMESTAMP - $ulastactivity > 21600) {
  2. if($oltimespan && TIMESTAMP - $ulastactivity > 43200) {
  3. $total = DB::result_first("SELECT total FROM ".DB::table('common_onlinetime')." WHERE uid='$_G[uid]'");
  4. DB::update('common_member_count', array('oltime' => round(intval($total) / 60)), "uid='$_G[uid]'", 1);
  5. }
  6. dsetcookie('ulastactivity', authcode(TIMESTAMP, 'ENCODE'), 31536000);
  7. DB::update('common_member_status', array('lastip' => $_G['clientip'], 'lastactivity' => TIMESTAMP, 'lastvisit' => TIMESTAMP), "uid='$_G[uid]'", 1);
  8. }
复制代码

修改为
  1. if($_G['uid'] && TIMESTAMP - $ulastactivity > 21600) {
  2. if($oltimespan && TIMESTAMP - $ulastactivity > 43200) {
  3. $total = DB::result_first("SELECT total FROM ".DB::table('common_onlinetime')." WHERE uid='$_G[uid]'");
  4. DB::update('common_member_count', array('oltime' => round(intval($total) / 60)), "uid='$_G[uid]'", 1);

  5. dsetcookie('ulastactivity', authcode(TIMESTAMP, 'ENCODE'), 31536000);
  6. }
  7. DB::update('common_member_status', array('lastip' =>
  8. $_G['clientip'], 'lastactivity' => TIMESTAMP, 'lastvisit' =>
  9. TIMESTAMP), "uid='$_G[uid]'", 1);
  10. }
复制代码

2.解决用户刷在线时间
同样是修改function_core.php中的updatesession函数
找到
  1. $lastolupdate = $discuz->session->var['lastolupdate'];
复制代码

删除这句,将其替换成
游客,如果您要查看本帖隐藏内容请回复

此方案解决用户刷在线时间,但已经刷过的用户,无法通过此方法恢复。



上一篇:Discuz7.0升级到Discuz X2用户还是无法登录的解决办法
下一篇:Discuz升级到dx后消息列表无法显示
authicon attaboy 发表于 2013-10-20 14:26:37 | 显示全部楼层
打算的撒娇的撒科打诨
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-6-17 23:06

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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