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']."人";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值