php网站同时在线人数,也谈php网站在线人数统计
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."
";
$conn?=?mysql_connect(DB_HOST,DB_USER,DB_PASS);
mysql_select_db(DB_NAME);
/*
if?($conn)
{
echo?"Connect?to?database?sucessfully.?connection?id:".$conn."
";
}
else
{
echo?"Connect?to?database?failed.
";
}
*/
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.
";
else
echo?"MySQL?Database?disconnecting?failed.?Please?try?again.
";
*/
}
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']."人";
總結
以上是生活随笔為你收集整理的php网站同时在线人数,也谈php网站在线人数统计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php正则引用不能计算,php正则表达式
- 下一篇: oracle查询blob数据,C#查询O