Discuz!官方免费开源建站系统

 找回密码
 立即注册
搜索

一个问题

[复制链接]
魔焰男孩 发表于 2005-8-13 16:29:26 | 显示全部楼层 |阅读模式
在这里,我正常在线,为什么在帖子里显示的状态是离线?
回复

使用道具 举报

夏天 发表于 2005-8-18 10:07:25 | 显示全部楼层
解释主页在线列表的在线情况和帖子在线状态不一致

主页上会员在线列表的资料是放在cdb_sessions的表中
一个会员一条记录
而config.inc.php文件中的变量设置$onlinehold = 900;
就是控制会员多少时间不在线,他的资料自动从cdb_sessions表中删除
cdb_sessions表中的会员资料,只要你刷新一下,他就自动更新。
所以只要会员在$onlinehold时间内刷新了网页,会员的资料在cdb_sessions表中不被删除,那么他在主页上的在线列表中就是存在的。

再来说说帖子中的会员在线。
如果帖子中会员在线情况也调用cdb_sessions表中的记录判断,那么会比较浪费资源。
所以官方采用的方法是调用cdb_members表中的lastactivity字段的值来判断。
具体是怎么判断的呢

<!--{if $timestamp - $post['lastactivity'] <= 10800 && !$post['invisible']}-->
        {lang online_status} <b>{lang online}</b>
<!--{else}-->
        {lang online_status} {lang offline}
<!--{/if}-->

从这里可以看出,只要lastactivity的值和当前时间相差3个小时以内,那么该会员就是在线的。
这里有一个关键:lastactivity的值不像cdb_sessions表中的记录是刷新一次就更新一次
而是当会员资料从cdb_sessions表中删除后才更新的,那么如果会员一直在线,cdb_sessions表中的资料一直不被删除,引起lastactivity的值一直不被更新,那么3个小时后,在主页上该会员在线,帖子中却不在线了。

这会出现两种情况。
1、某会员上论坛一下就下线了,那么就出现该会员在主页不在线,在帖子中在线长达3个小时。
2、某会员一直在线,超过3小时,那么就出现该会员在主页在线,在帖子中却不在线。

作者:商业用户 磨碎的沙子
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-12-12 04:04 , Processed in 0.109070 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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