2011-06-20 57 views

回答

3

一種可能性是將每個用戶的最後一個動作保存在數據庫中(如時間戳),並說「在過去的2分鐘內執行某些動作的每個用戶都在線」。

如果你用ajax更新了這個例子,你將能夠追蹤誰關閉了頁面,誰不關閉。

2
  1. 存儲會話的DB,存儲 user_ID的作爲 會話表的額外領域。開放 會議

但要注意的是會話不是這是真正的網站上用戶的100%表示

  • 查詢會話表。 (會話超時)。

  • 0

    你可以以這樣的事:

    與創建tblOnline表以下字段

    id int not null auto_increment primary key 
    colSession text 
    colStamp int 
    

    當有人登錄你爲他們創建一個會話變量:

    session_start(); 
    $_SESSION['online'] = md5(uniqid(rand(), true)); // Create a unique string 
    

    存放在tblOnline唯一的會話:

    $stamp = time(); 
    mysql_query('INSERT INTO tblOnline (colSession,colStamp) VALUES ('.$_SESSION['online'].','.$stamp.')'); 
    

    當他們做一些事情(比如,頁面重新加載)用當前時間戳更新colStamp:

    $now = time(); 
    mysql_query('UPDATE tblOnline SET colStamp = '.$now.' WHERE colSession = '.$_SESSION['online'].''); 
    

    要獲得所有的在線用戶做這樣的事情:從數據庫

    $timecheck = time()-(60*5); // 5 minutes back 
    $rs = mysql_query('SELECT * FROM tblOnline WHERE Stamp > '.$timecheck.''); 
    $num = mysql_num_rows($rs); 
    echo "There are: ".$num." users online right now!"; 
    

    清理舊會話數據不時地(上當然colStamp匹配):

    $timeclean = time()-(60*60); // One hour back 
    mysql_query('DELETE FROM tblOnline WHERE Stamp < '.$timeclean.''); 
    
    相關問題