【PHP程式設計+MySQL資料庫+PHPMaker整合教學+技術諮詢】 本月特價優惠中! 動態的架站程式時代,要自訂PHP程式頁面有那麼難嗎? MySQL『資料庫』與『資料表』,用PHP程式有那麼難控制嗎? 你不用死背『PHP程式』與『MySQL資料庫』語法也能獨自設計完成! 這是自動化軟體程式的年代 (用PHPMaker 設計在彈指之間就能自動生成整個 PHP 程式系統) 這不是:神話!程式軟體模組取代了這一切複雜的工程。 你可以自己建構自己專屬的: 訂購表單、會員名單、擴增購物車特殊頁面 →POS 系統、CRM 系統、ERP 系統、HRM 系統...等等 (更可以加入數據資源銷售賺錢!) 該是:【見證奇蹟】的時候了! 非親眼所見....真的無法相信此神兵利器!

PHP程式設計問題諮詢:
請問,如何計算現用的線上人數?

———————————————————
PHP程式設計問題回覆:
您要計算現用的線上人數?,可以參考以下的說明:

———————————————————
計算現用的線上人數

例子一:用文字實現
<?php
//首先你要有讀寫檔的許可權
//本程式可以直接運行,第一次報錯,以後就可以
  $online_log = "count.dat"; //儲存人數的檔,
  $timeout = 30;//30秒內沒動作者,認為掉線
  $entries = file($online_log);

  $temp = array();
 
  for ($i=0;$i<count($entries);$i++) {
   $entry = explode(",",trim($entries[$i]));
   if (($entry[0] != getenv('REMOTE_ADDR')) && ($entry[1] > time())) {
    array_push($temp,$entry[0].",".$entry[1]."
"); //取出其他流覽者的資訊,並去掉逾時者,儲存進$temp
   }
  }

   array_push($temp,getenv('REMOTE_ADDR').",".(time() + ($timeout))."
"); //更新流覽者的時間
  $users_online = count($temp); //計算線上人數

  $entries = implode("",$temp);
  //寫入檔案
  $fp = fopen($online_log,"w");
   flock($fp,LOCK_EX); //flock() 不能在NFS以及其他的一些網路檔系統中標準工作
   fputs($fp,$entries);
   flock($fp,LOCK_UN);
   fclose($fp);

   echo "現用的有".$users_online."人線上";

?>  
例子二:
用資料庫實現線上使用者

<?
#
# Author: Marco(hkfuk)
#
# Contact: Crazy_Marco@msn.com
#
$host="localhost";//mysql的host
$user="root";//mysql的使用者名稱
$pw="";//mysql的密碼
$db="";//mysql資料庫名稱
$update_time="30";//更新的頻率—秒數
session_start();
if(!$_SESSION['name'])session_register("name");
############################################
$con=mysql_connect($host,$user,$pw)or die("不可以連線資料庫");
$now=time();
mysql_select_db($db,$con)or die("錯誤的資料庫$db");
if(!empty($name)){//如果使用者已經登入了
$query=mysql_query("select count(username) from online_list where username='$name'",$con);//查詢線上到表是否已經有使用者的名稱
$result=mysql_result($query,0);//查詢的結果
if($result!=0){//如果使用者已經在線上清單了
@mysql_query("update online_list set second_time='$now' where username='$name'",$con);//更新使用者的最後線上時間
}else{//如果使用者已經不在線上清單
@mysql_query("insert into online_list(username,userip,online_time,second_time)values('$name','$REMOTE_ADDR','$now','$now')",$con);// 新增一個使用者到線上清單
}
}

else{//如果使用者沒有登入
$query=mysql_query("select count(userip) from online_list where userip='$REMOTE_ADDR'",$con);//查詢線上到表是否已經有訪客的ip 位址
$result=mysql_result($query,0);//查詢的結果
if($result!=0){//如果訪客的ip位址已經在線上清單了
@mysql_query("update online_list set second_time='$now' where userip='$REMOTE_ADDR'",$con);//更新訪客的最後線上時間
}else{//如果使用者清單沒有訪客的ip位址
@mysql_query("insert into online_list(username,userip,online_time,second_time)values('訪客 ','$REMOTE_ADDR','$now','$now')",$con);//新增一個訪客到線上清單
}
}
$del_time=$now-$update_time;
@mysql_query("delete from online_list where second_time<$del_time",$con);//刪除在$update_time秒內沒有動作的使用者
?>

———————————————————