久久久精品2019免费观看_亚洲国产精品成人久久久_69国产成人综合久久精品91_国产精品久久精品视

discuzx在線人數(shù)設(shè)置

  核心提示:常有碰到有同學(xué)問在線人數(shù)的問題,官方默認(rèn)的是顯示最大在線500人(建議不要改動(dòng)太大的值,影響頁(yè)面加載的效率)。這里我就和大家一起看看,在線人數(shù)是如何設(shè)置和現(xiàn)實(shí)的。首先我們找到論壇首頁(yè)網(wǎng)站模板的處理程序頁(yè)面,source/module/forum/forum_index.php找到如下代碼:$onli…

常有碰到有同學(xué)問在線人數(shù)的問題,官方默認(rèn)的是顯示最大在線500人(建議不要改動(dòng)太大的值,影響頁(yè)面加載的效率)。這里我就和大家一起看看,在線人數(shù)是如何設(shè)置和現(xiàn)實(shí)的。
首先我們找到論壇首頁(yè)網(wǎng)站模板的處理程序頁(yè)面,source/module/forum/forum_index.php找到如下代碼:
$onlineinfo = explode(" ", $_G['cache']['onlinerecord']);
if(empty($_G['cookie']['onlineusernum'])) {
                        $onlinenum = DB::result_first("SELECT count(*) FROM ".DB::table('common_session'));
                        if($onlinenum > $onlineinfo[0]) {
                                $onlinerecord = "$onlinenum ".TIMESTAMP;
                                DB::query("UPDATE ".DB::table('common_setting')." SET svalue='$onlinerecord' WHERE skey='onlinerecord'");
                                save_syscache('onlinerecord', $onlinerecord);
                                $onlineinfo = array($onlinenum, TIMESTAMP);
                        }
                        dsetcookie('onlineusernum', intval($onlinenum), 300);
                } else {
                        $onlinenum = intval($_G['cookie']['onlineusernum']);
                }
這里$onlineinfo為在線信息的緩存記錄,如果此值為空,則查詢common_session表,讀取在線人數(shù)的緩存。如果當(dāng)前人數(shù)大于緩存最高在線人數(shù),則更新common_setting表的最高在線記錄人數(shù),并緩存。如果有在線人數(shù)記錄則直接讀取在線人數(shù)。

如果后臺(tái)開啟了現(xiàn)實(shí)在線人數(shù),則處理在線現(xiàn)會(huì)員信息。

$_G['setting']['maxonlinelist'] = $_G['setting']['maxonlinelist'] ? $_G['setting']['maxonlinelist'] : 500;
在此程序?qū)δJ(rèn)顯示的在線人數(shù)默認(rèn)限定為500;
$query = DB::query("SELECT uid, username, groupid, invisible, lastactivity, fid FROM ".DB::table('common_session')." WHERE uid>'0' LIMIT ".$_G['setting']['maxonlinelist']);
                        while($online = DB::fetch($query)) {
                                $membercount ++;
                                if($online['invisible']) {
                                        $invisiblecount++;
                                        continue;
                                } else {
                                        $online['icon'] = !empty($_G['cache']['onlinelist'][$online['groupid']]) ? $_G['cache']['onlinelist'][$online['groupid']] : $_G['cache']['onlinelist'][0];
                                }
                                $online['lastactivity'] = dgmdate($online['lastactivity'], 't');
                                $whosonline[] = $online;
                        }
這里通過common_session表的查詢,搜索出最近在線的顯示會(huì)員,這里排除了invisible的隱身會(huì)員。

if(isset($_G['cache']['onlinelist'][7]) && $_G['setting']['maxonlinelist'] > $membercount) {
                                $query = DB::query("SELECT uid, username, groupid, invisible, lastactivity, fid FROM ".DB::table('common_session')." WHERE uid='0' ORDER BY uid DESC LIMIT ".($_G['setting']['maxonlinelist'] – $membercount));
                                while($online = DB::fetch($query)) {
                                        $online['icon'] = $_G['cache']['onlinelist'][7];
                                        $online['username'] = $_G['cache']['onlinelist']['guest'];
                                        $online['lastactivity'] = dgmdate($online['lastactivity'], 't');
                                        $whosonline[] = $online;
                                }
                        }

這里如果在最大在線人數(shù)大于當(dāng)前在線會(huì)員,這剩余的部分通過游客補(bǔ)全。


if($onlinenum > $_G['setting']['maxonlinelist']) {
                                $membercount = $discuz->session->onlinecount(1);
                                $invisiblecount = DB::result_first("SELECT COUNT(*) FROM ".DB::table('common_session')." WHERE invisible = '1'");
                        }

                        if($onlinenum < $membercount) {
                                $onlinenum = $discuz->session->onlinecount(0);
                                dsetcookie('onlineusernum', intval($onlinenum), 300);
                        }

                        $guestcount = $onlinenum – $membercount;
以上代碼的意思是,如果在線人數(shù)>最大顯示在線人數(shù),則重新統(tǒng)計(jì)在線會(huì)員人數(shù)。

一旦在線人數(shù)<在線會(huì)員數(shù),則重新統(tǒng)計(jì)所有在線會(huì)員數(shù)(包括隱身)并寫入緩存。

最后由在線總?cè)藬?shù)和在線會(huì)員數(shù)得出在線游客。

未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » discuzx在線人數(shù)設(shè)置

贊 (0) 打賞

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

微信掃一掃打賞