也谈php网站在线人数统计

BAT 批处理程序 2017-06-11

  function checkOnline($userid,$tempid=null)     

{     

$conn = connect();     

//对于所有用户     

//先设置自己为在线     

$stmt = "UPDATE ".DB_NAME.".USER SET IsOnline='Y' WHERE Userid=".$userid;     

$result = query($stmt,$conn);     

//info($stmt);     

//如果当前用户是游客     

if ($tempid != null)     

{     

$stmt = "SELECT TempID FROM ".DB_NAME.".TEMPUSER WHERE    

Tempid=".$tempid;     

$result = query($stmt,$conn);     

//info($stmt);     

//如果该游客还在线     

if ($row = fetch_array($result))     

{     

$stmt = "UPDATE ".DB_NAME.".TEMPUSER SET    

RequestTime='".getCurrentTime()."' WHERE Tempid=".$tempid;     

$result = query($stmt,$conn);     

//info($stmt);     

}     

//该游客已经离线     

else     

{     

$stmt = "INSERT INTO ".DB_NAME.".TEMPUSER    

VALUES('".$tempid."','".getCurrentTime()."')";     

$result = query($stmt,$conn);     

//info($stmt);     

}     

}     

//查看其他用户     

//普通用户     

$stmt = "UPDATE ".DB_NAME.".USER SET IsOnline='N' WHERE ".time()." -    

unix_timestamp(RequestTime) > ".ONLINE_DURATION." AND UserGroupID != ".GUEST;     

$result = query($stmt,$conn);     

//游客     

$stmt = "DELETE FROM ".DB_NAME.".TEMPUSER WHERE ".time()." -    

unix_timestamp(RequestTime) > ".ONLINE_DURATION;     

$result = query($stmt,$conn);     

disconnect($conn);     

}     

//得到在线人数,分用户和游客     

function getOnlineNumber()     

{     

$olnum = array();     

$conn = connect();     

$stmt = "SELECT COUNT(UserID) FROM ".DB_NAME.".USER WHERE IsOnline='Y' AND    

UserGroupID != 4"; //4 为guest的用户组id     

//info ($stmt);     

$result = query($stmt,$conn);     

$olnum['user'] = result($result,0,"COUNT(UserID)");     

$stmt = "SELECT COUNT(TempID) FROM ".DB_NAME.".TEMPUSER";     

//info ($stmt);     

$result = query($stmt,$conn);     

if ($row = fetch_array($result))     

{     

$olnum['guest'] = $row['COUNT(TempID)'];     

}     

disconnect($conn);     

return $olnum; //from www.w3sky.com    

}     

其中的connect(), disconnect(), query(),fetch_array()函数在dbmanager.inc.PHP中     

dbmanager.inc.PHP     

define("DB_NAME","databasename");     

define("DB_USER","user");     

define("DB_PASS","pass");     

define("DB_HOST","localhost");     

function connect()     

{     

//echo "Connecting to Host:".HOST."<br>";     

$conn = mysql_connect(DB_HOST,DB_USER,DB_PASS);     

mysql_select_db(DB_NAME);     

/*    

if ($conn)    

{    

echo "Connect to database sucessfully. connection id:".$conn."<br>";    

}    

else    

{    

echo "Connect to database failed.<br>";    

}    

*/     

return $conn;     

}     

function pconnect()     

{     

return mysql_pconnect(DB_HOST,DB_USER,DB_PASS);     

}     

function disconnect($conn)     

{     

$close = mysql_close($conn);     

/*    

if ($close)    

echo "MySQL Database disconnected.<br>";    

else    

echo "MySQL Database disconnecting failed. Please try again.<br>";    

*/     

}     

function query($stmt,$conn)     

{     

return mysql_query($stmt,$conn); //from www.w3sky.com    

}     

function fetch_array($result)     

{     

return mysql_fetch_array($result);     

}     

function fetch_row($result)     

{     

return mysql_fetch_row($result);     

}     

function num_rows($result)     

{     

return mysql_num_rows($result);     

}     

function result($result,$row,$field)     

{     

return mysql_result($result,$row,$field);     

}     

rule层:     

rl_online.PHP     

function getOnline()     

{     

if ($userid == 2)     

{     

if (session_is_registered("tempuserid"))     

{     

checkOnline($userid,$tempuserid);     

}     

}     

else     

{     

checkOnline($userid);     

}     

return getOnlineNumber();     

}     

ui层:     

ui_online.PHP     

$online_num = getOnline();     

echo "在线人数,注册用户".$online_num['user']."人,游客".$online_num['guest']."人"; 

相关推荐