也谈php网站在线人数统计


Posted in PHP onApril 09, 2008

  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安全配置方法
Jun 16 PHP
PHP与SQL注入攻击防范小技巧
Sep 16 PHP
php explode函数实例代码
Feb 27 PHP
基于PHP生成静态页的实现方法
May 10 PHP
PHP生成自适应大小的缩略图类及使用方法分享
May 06 PHP
PHP获取文件的MD5值并判断是否被修改的例子
Jun 19 PHP
PHP获取当前页面URL函数实例
Oct 22 PHP
php实现的简单检验登陆类
Jun 18 PHP
使用php实现从身份证中提取生日
May 09 PHP
php+ajax无刷新上传图片的实现方法
Dec 06 PHP
php变量与JS变量实现不通过跳转直接交互的方法
Aug 25 PHP
PHP操作路由器实现方法示例
Apr 27 PHP
php实现的在线人员函数库
Apr 09 #PHP
PHP循环获取GET和POST值的代码
Apr 09 #PHP
生成卡号php代码
Apr 09 #PHP
PHP获取网卡地址的代码
Apr 09 #PHP
PHP防注入安全代码
Apr 09 #PHP
PHP中用header图片地址 简单隐藏图片源地址
Apr 09 #PHP
PHP中的extract的作用分析
Apr 09 #PHP
You might like
Terran热键控制
2020/03/14 星际争霸
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
PHP实现微信图片上传到服务器的方法示例
2017/06/29 PHP
JavaScript 三种创建对象的方法
2009/10/16 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
2013/01/04 Javascript
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
ajax异步请求详解
2017/01/06 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
2019/02/15 jQuery
JS原生瀑布流效果实现
2019/04/26 Javascript
详解React的回调渲染模式
2020/09/10 Javascript
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
Python手机号码归属地查询代码
2016/05/04 Python
Python常用知识点汇总
2016/05/08 Python
对python中的pop函数和append函数详解
2018/05/04 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
使用Python的toolz库开始函数式编程的方法
2018/11/15 Python
详解python中的Turtle函数库
2018/11/19 Python
python定位xpath 节点位置的方法
2019/08/27 Python
Python 列表的清空方式
2020/01/13 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
HSRP的含义以及如何工作
2014/09/10 面试题
会计学生自我鉴定
2014/02/06 职场文书
工程师岗位职责规定
2014/02/26 职场文书
2014乡镇“三八”国际劳动妇女节活动总结
2014/03/01 职场文书
2014年科普工作总结
2014/12/06 职场文书
给下属加薪申请报告
2015/05/15 职场文书
运动会广播稿50字
2015/08/19 职场文书
各种货币符号快捷输入
2022/02/17 杂记
《现实主义勇者的王国再建记》第三弹OST全曲试听片段公开
2022/04/04 日漫