也谈php网站在线人数统计

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

相关文章

PHP实现的简单日历类

本文实例讲述了PHP实现的简单日历类。分享给大家供大家参考。 具体实现代码如下: 复制代码 代码如下:date_default_timezone_set("etc/gmt-8"); h...

学习php设计模式 php实现命令模式(command)

学习php设计模式 php实现命令模式(command)

一、意图 将一个请求封装为一个对象,从而使用你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 可变的方面是:何时,怎样满足一个请求 命令模式是对命令的封...

PHP实现的DES加密解密类定义与用法示例

本文实例讲述了PHP实现的DES加密解密类定义与用法。分享给大家供大家参考,具体如下: 今天写App接口的时候需要传递加密数据给APP端,于是就写了下面的DES加密类,亲测正确代码如下...

PHP getID3类的使用方法学习笔记【附getID3源码下载】

本文实例讲述了PHP getID3类的使用方法。分享给大家供大家参考,具体如下: 网上描述: getID3()这个PHP脚本能够从MP3或其它媒体文件中提取有用的信息如:ID3标签,bi...

php中 ob_start等函数截取标准输出的方法

最近在用PHP在cli下开发一款软件,遇到了这样的问题。我想将PHP脚本中输出的东西收集在一起,于是使用了ob_start和ob_end_flush这两个函数,确实有达到收集输出内容的作...