作者roga (凝視)
看板PHP
標題[閒聊] 線上使用者的作法..
時間Tue Sep 4 22:12:24 2007
請問各位前輩,
小弟想寫一個「多人版」的線上使用者系統..
(就是看有幾個人同時在線上,不同的站分開計算)
目前想到的方法是
建立一個 table 叫做 online 然後以下欄位:
serial - 序號.自動增加
id - 屬於哪個站台的紀錄
ip - 進入的使用者來源
lastvisit - 進入時間
首先刪除所有逾時的人 (假設 300 秒逾時)
$sql = "DELETE FROM online WHERE unix_timestamp() - lastvisit >=
300 AND id = '$id'";
然後使用者是否造訪過
$sql = "SELECT id FROM online WHERE ip = '$ip' AND id = '$id'";
計算 mysql_query($sql) 是為 0
如果是 0 的話,插入一筆新的資料:
$sql = "INSERT INTO online (id, ip, lastvisit) VALUES
('$id','$ip',unix_timestamp())";
如果不是 0 的話,把 time stamp 延後
$sql = "UPDATE users_online SET lastvisit = unix_timestamp()
WHERE id = '$id' AND ip = '$ip'";
最後計算該站台有多少人
$sql = "SELECT count(id) FROM online WHERE id='$id'";
但總覺得這樣查詢的筆數很多很雜,不知道有沒有更好效率的作法?
--
凝視著,卻看不見光景。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.130.223.207
推 LPH66:個人感覺一個頁面四個查詢已經不錯了... 09/04 23:13
→ roga:謝謝您 09/05 00:23