【求助】線上人數的程式



贊助商連結


wpeter
2005-02-28, 09:49 PM
 小弟最近想來寫一支程式紀錄線上人數。使用的語言是PHP,利用資料庫來記錄使用者的IP、上下線時間和上
線狀態等資訊。
 首先,程式會先連線到資料庫,然後檢查資料庫內是否有資料。如果沒有資料的話,那程式就自動新增這個使用者
的上線資料,這個時候,線上人數就會+1(利用計算共有幾筆紀錄的方式)
 如果資料庫裡已經有資料了,那程式應該要去搜尋資料庫中,上線狀態顯示為上線的欄位,然後比對這位使用者的
IP有沒有跟資料庫內的資料重複。如果有的話,表示這位使用者已經在線上了,就略過不做任何動作。而若是沒有
相符的資料的話,表示這位使用者是新進的使用者,程式要在資料庫中插入一筆新的資料。
 下面列的程式碼是有問題的部份。試問要怎樣從資料庫中擷取IP資料出來比對?感覺上我是寫的很奇怪,這樣寫
的話,程式不會有任何作用。希望有人可以幫我改一下.....拜託~~


//
// 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;
}
}

贊助商連結


nopy
2005-03-01, 10:06 AM
計算線上人數遇到最大的問題就是無法把已經離開網站的人扣掉

大部分的論壇都是直接分析伺服器上面的 SESSION 資料來計算線上人數,
不過同樣的,由於 SESSION 並不會在使用者離開網站時自動刪除,
所以也不是很準就是了~

wpeter
2005-03-02, 12:19 AM
 SESSION的話,也是一種選擇。通常都是有一個間隔時間,然後就檢查一次,如果已
經離線了,就把資料刪掉,或者是加入已經離線的紀錄。SESSION好像一關瀏覽器就不
見了。這樣子就沒辦法紀錄整個上線的情況。
 如果網站很多人上的話,那就會比較準。只要有任何一個人連上首頁,就可以自動進
行判斷。這是我大概的想法。不過關鍵的程式碼就是寫不出來就是了。還需要思考。

nopy
2005-03-02, 01:22 AM
要用 SESSION 計算(估計)線上人數的話,這邊有個簡單的例子:

http://www.webkreator.com/php/concepts/counting-users-online-with-php.html

瀏覽器關掉並不會讓伺服器馬上刪除 session,因為伺服器無從知道用戶是不是關掉瀏覽器或者連到別的網頁了
session 是由伺服器定時去刪除的,保存時間設定在 php.ini 中,程式內也可更改