找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 464|回复: 0
打印 上一主题 下一主题

也谈php网站在线人数统计

[复制链接]

2487

主题

2487

帖子

7391

积分

论坛元老

Rank: 8Rank: 8

积分
7391
跳转到指定楼层
楼主
发表于 2018-2-14 09:23:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

              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中3种方法统计字符串中每种字符的个数并排序
  • 使用php统计字符串中中英文字符的个数
  • PHP统计二维数组元素个数的方法
  • php计算数组不为空元素个数的方法
  • PHP统计数值数组中出现频率最多的10个数字的方法
  • php统计数组元素个数的方法
  • php精确的统计在线人数的方法
  • php使用文本统计访问量的方法
  • php英文单词统计器
  • php简单统计中文个数的方法
  • php版微信数据统计接口用法示例
  • PHP实现统计在线人数功能示例
  • PHP编程计算文件或数组中单词出现频率的方法
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端