discuz在线人数的实现原理(Discuz6.1.0)
1、首頁上的“在線會員”,顯示的是簡略版
2、點擊首頁上的“在線會員”,去到“在線用戶”的詳細頁,http://yourdomain.com/member.php?action=online
?? ? ?? 實現(xiàn)原理:依賴于一個session表,{$tablepre}sessions。
??????? 用戶進入論壇(index.php:197行)或者版塊首頁(forumdisplay.php:207行)會觸發(fā)一個 updatesession()函數(shù)(在include/global.func.php里面定義),還有其他地方也有觸發(fā)這個函數(shù)。這個函數(shù)會往 {$tablepre}sessions表里面插入一條新記錄(已有記錄則更新這條記錄),插入的內(nèi)容包括當“前動作”的代號、當前論壇ID,當前主題 ID。
??????? 首頁取在線會員數(shù)首頁是取$_DCOOKIE['onlineusernum'] 值($_DCOOKIE其實就是$_COOKIE),沒有的話再從sessions表里面count(*)一下,還有一些處理總在線人數(shù)、游客人數(shù)、隱身 人數(shù)的邏輯處理,具體的可以看一下index.php 173-240之間的代碼;在線用戶頁(member.php 23行-50行之間),也是也從sessions表里面count(*)一下總在線人數(shù),然后再根據(jù)sessions表里面的fid(論壇ID)和 tid(主題ID)左連接forums、threads表取得論壇名稱、帖子標題,至于“當前動作”,sessions里面保存的是一個代號,相對應的文 字在templates/default/action.lang.php文件里面“當前動作”是一個全局變量$discuz_action ,在不同頁面有不同的值,如在:
index.php???? $discuz_action = 1;(瀏覽論壇首頁)
logging.php??? $discuz_action = 6;(登錄論壇)
viewthread.php? $discuz_action = 3;(瀏覽帖子)
以上代碼是針對DZ6.1版本。
轉(zhuǎn)載于:https://blog.51cto.com/xuqin/882307
總結
以上是生活随笔為你收集整理的discuz在线人数的实现原理(Discuz6.1.0)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iphone NSArray 数组越界
- 下一篇: Linux find 用法示例