我爱打折 » 【会员留言】 » 为什么我登陆后我的状态老显示“离线”呐?

2008-5-16 12:10 沁雪
为什么我登陆后我的状态老显示“离线”呐?

[size=4][color=red]我已经成功登陆,但有时候却发现我的状态老显示“离线”???为什么?我分明是“在线”啊???[/color][/size]

2008-5-16 19:22 小编A
为什么有时在线时,但帖子里显示我的状态是离线呢?
这与论坛程序的设置机制有关,属于正常现象,相关技术解释如下:
主页上会员在线列表的资料是放在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小时,那么就出现该会员在主页在线,在帖子中却不在线。

2008-5-16 19:47 沁雪
有些似懂非懂,不过仍然谢谢小编了

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.