-
【求助】線上人數的程式
小弟最近想來寫一支程式紀錄線上人數。使用的語言是PHP,利用資料庫來記錄使用者的IP、上下線時間和上
線狀態等資訊。
首先,程式會先連線到資料庫,然後檢查資料庫內是否有資料。如果沒有資料的話,那程式就自動新增這個使用者
的上線資料,這個時候,線上人數就會+1(利用計算共有幾筆紀錄的方式)
如果資料庫裡已經有資料了,那程式應該要去搜尋資料庫中,上線狀態顯示為上線的欄位,然後比對這位使用者的
IP有沒有跟資料庫內的資料重複。如果有的話,表示這位使用者已經在線上了,就略過不做任何動作。而若是沒有
相符的資料的話,表示這位使用者是新進的使用者,程式要在資料庫中插入一筆新的資料。
下面列的程式碼是有問題的部份。試問要怎樣從資料庫中擷取IP資料出來比對?感覺上我是寫的很奇怪,這樣寫
的話,程式不會有任何作用。希望有人可以幫我改一下.....拜託~~
[PHP]
//
// If database is not empty
//
$online_query = mysql_query("SELECT online FROM suribbs_online WHERE online='1'");
$result = mysql_fetch_array($online_query);
while($row = mysql_fetch_row($online_query))
{
if($online_or_not[1]!=$ip)
{
$sql = "INSERT INTO suribbs_online (ip, on_date, on_time, movement, online) VALUES ('$ip', now(), '$time', '$movement', '1')";
mysql_query($sql);
} else {
continue;
}
}
[/PHP]
-
計算線上人數遇到最大的問題就是無法把已經離開網站的人扣掉
大部分的論壇都是直接分析伺服器上面的 SESSION 資料來計算線上人數,
不過同樣的,由於 SESSION 並不會在使用者離開網站時自動刪除,
所以也不是很準就是了~
-
SESSION的話,也是一種選擇。通常都是有一個間隔時間,然後就檢查一次,如果已
經離線了,就把資料刪掉,或者是加入已經離線的紀錄。SESSION好像一關瀏覽器就不
見了。這樣子就沒辦法紀錄整個上線的情況。
如果網站很多人上的話,那就會比較準。只要有任何一個人連上首頁,就可以自動進
行判斷。這是我大概的想法。不過關鍵的程式碼就是寫不出來就是了。還需要思考。
-
要用 SESSION 計算(估計)線上人數的話,這邊有個簡單的例子:
[url]http://www.webkreator.com/php/concepts/counting-users-online-with-php.html[/url]
瀏覽器關掉並不會讓伺服器馬上刪除 session,因為伺服器無從知道用戶是不是關掉瀏覽器或者連到別的網頁了
session 是由伺服器定時去刪除的,保存時間設定在 php.ini 中,程式內也可更改