本帖最后由 cokes1 于 2012-1-26 01:22 编辑
ps:比较不解的是更新在线时间部分的设计思路,感觉改一下更好吧!
大于6小时小于12小时不浏览论坛就更新一次最后活动时间,用户大于12小时不浏览论坛才更新common_member_count表。如果用户挂在线时间,一直挂着不断的刷新论坛,那common_member_count表就不更新了。为什么要这样设计呢?为了性能?为了不鼓励用户挂在线时间?- //修改前
- if($_G['uid'] && TIMESTAMP - $ulastactivity > 21600) {
- if($oltimespan && TIMESTAMP - $ulastactivity > 43200) {
- $total = DB::result_first("SELECT total FROM ".DB::table('common_onlinetime')." WHERE uid='$_G[uid]'");
- DB::update('common_member_count', array('oltime' => round(intval($total) / 60)), "uid='$_G[uid]'", 1);
- }
- dsetcookie('ulastactivity', authcode(TIMESTAMP, 'ENCODE'), 31536000);
- DB::update('common_member_status', array('lastip' => $_G['clientip'], 'lastactivity' => TIMESTAMP, 'lastvisit' => TIMESTAMP), "uid='$_G[uid]'", 1);
- }
复制代码 个人感觉,去掉一层判断,当前时间 - 最后活动时间>一定时间,后直接更新common_member_count表和common_member_status表不更好么?这样就可以避免很多会员问为什么不更新的麻烦了。- //修改后
- if($_G['uid'] && TIMESTAMP - $ulastactivity > 21600) {
- if($oltimespan) {
- $total = DB::result_first("SELECT total FROM ".DB::table('common_onlinetime')." WHERE uid='$_G[uid]'");
- DB::update('common_member_count', array('oltime' => round(intval($total) / 60)), "uid='$_G[uid]'", 1);
- }
- dsetcookie('ulastactivity', authcode(TIMESTAMP, 'ENCODE'), 31536000);
- DB::update('common_member_status', array('lastip' => $_G['clientip'], 'lastactivity' => TIMESTAMP, 'lastvisit' => TIMESTAMP), "uid='$_G[uid]'", 1);
- }
复制代码 请官方解惑~
|