作者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
1F:推 LPH66:个人感觉一个页面四个查询已经不错了... 09/04 23:13
2F:→ roga:谢谢您 09/05 00:23