国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

php如何計(jì)算用戶(hù)在線時(shí)間

2020-04-27 18:57:55
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

    php計(jì)算用戶(hù)在線時(shí)長(zhǎng)的幾種方法:
   
    下面是計(jì)算用戶(hù)在線時(shí)長(zhǎng)的幾種常用的方法,根據(jù)不同情況可做相應(yīng)的選擇:
   
    首先介紹一下所涉及的數(shù)據(jù)表結(jié)構(gòu),四個(gè)字段:
   
    uid<int(10)> :用戶(hù)id
   
    session_id<varchar(40)> :用戶(hù)登錄后系統(tǒng)產(chǎn)生的session_id,PHP可是使用session_id()函數(shù)獲取
   
    login_time<int(10)> :登錄時(shí)間
   
    logout_time<int(10)> :登出時(shí)間
   
    1. 服務(wù)器設(shè)定一個(gè)定時(shí)輪詢(xún)的腳本。這個(gè)方法是在服務(wù)器端 寫(xiě)一個(gè)定時(shí)執(zhí)行的腳本,比如5分鐘執(zhí)行一次,根據(jù)數(shù)據(jù)庫(kù)中的記錄來(lái)判斷每個(gè)會(huì)話的session_id是否還存在于服務(wù)器上,如果存在就更新 logout_time,不存在就跳過(guò)。這樣也能比較準(zhǔn)確的統(tǒng)計(jì)在線時(shí)間,不過(guò)缺點(diǎn)是需要有服務(wù)器的控制權(quán),不然無(wú)法設(shè)定定時(shí)腳本,linux系統(tǒng)可以通過(guò)crontab實(shí)現(xiàn),windows系統(tǒng)可以通過(guò)計(jì)劃任務(wù)來(lái)完成。如果你只是買(mǎi)的虛擬主機(jī),那么這個(gè)方法也同樣不適合你。
   
    2. 客戶(hù)端定時(shí)發(fā)送請(qǐng)求到服務(wù)器端。實(shí)現(xiàn)方法是在用戶(hù)登錄后,將uid,session_id,login_time插入一條記錄,然后在客戶(hù)端js設(shè)定一個(gè) 計(jì)時(shí)器,比如每10分鐘向服務(wù)器端發(fā)送一個(gè)請(qǐng)求,以此來(lái)達(dá)到更新登出時(shí)間的目的,當(dāng)然這個(gè)間隔時(shí)間設(shè)定的越短,數(shù)據(jù)可能會(huì)越準(zhǔn)確,不過(guò)相應(yīng)的系統(tǒng)的負(fù)載也 會(huì)越高,這個(gè)可以根據(jù)實(shí)際情況設(shè)定一個(gè)合適的值。這種方法廣泛應(yīng)用于webgame上,因?yàn)閣ebgame的幾乎所有請(qǐng)求都是ajax請(qǐng)求,不用刷新頁(yè) 面,一旦刷新頁(yè)面,這個(gè)計(jì)時(shí)器就失去了價(jià)值,這也是這個(gè)方法的局限性。
   
    3. 在用戶(hù)每次活動(dòng)時(shí)更新一下登出時(shí)間。這樣在用戶(hù)不活動(dòng)或者退出的時(shí)候,登出時(shí)間就自然而然的存在于數(shù)據(jù)庫(kù)里了,這也是本文著重討論的方案。下面給出實(shí)現(xiàn)方法。
   
    首先,在用戶(hù)登錄成功后,記錄下其uid,session_id,并將現(xiàn)在時(shí)間作為登陸時(shí)間,現(xiàn)在時(shí)間+600s作為登出時(shí)間,插入數(shù)據(jù)庫(kù)。
   
    <?php
   
    $uid = $_SESSION['uid'] = $info['id'];
   
    $session_id = $_SESSION['session_id'] = session_id();
   
    $login_time = time();
   
    $logout_time = time()+600;
(責(zé)任編輯:VEVB)

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 自贡市| 土默特左旗| 嘉禾县| 随州市| 乳山市| 安溪县| 新郑市| 青川县| 玉树县| 新河县| 鄂伦春自治旗| 中山市| 凤凰县| 兴山县| 宕昌县| 德昌县| 兴宁市| 山西省| 平乐县| 吉林市| 吴堡县| 贵港市| 丹棱县| 景宁| 宁德市| 田东县| 滨海县| 枝江市| 丹寨县| 梓潼县| 德兴市| 遵化市| 昂仁县| 柳州市| 固阳县| 万源市| 通海县| 固原市| 额敏县| 长丰县| 金山区|