为什么我明明在线状态却显示离线呢

来源:百度文库 编辑:超级军网 时间:2024/04/29 15:48:32
我现在明明是在线的啊,但我看到我的状态却是离线。不知道是什么原因?我现在明明是在线的啊,但我看到我的状态却是离线。不知道是什么原因?
因为你是工商,

我也是经常出现这种情况,不过没有太在意就是了:handshake
俺也经常是这样,明明在线,却说离线,超大无视俺们啊,嘎嘎:) :)
在线的时候N分钟(好像是15?不清楚)没有进行操作就自动转成离线了``
好像是这样```
这个问题我也问过
我把它解释为灵异事件:victory:
;P ;P ;P
原帖由 qinger 于 2007-3-5 20:19 发表
这个问题我也问过
我把它解释为灵异事件:victory:

晚上熬夜出现这种现象可不是好事........
就是就是
有什么奇怪,我还试过六七个马甲同时显示在线的呢.:o
哈哈哈哈
。。。。楼上够狠。。站务都不放过。。;P
人家是MM...所以;P
跟着MM走,没错的
为什么有时在线时,但帖子里显示我的状态是离线呢?

这与论坛程序的设置机制有关,属于正常现象,相关技术解释如下:
主页上会员在线列表的资料是放在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小时,那么就出现该会员在主页在线,在帖子中却不在线。