也谈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 01 PHP
php简单的会话类代码
Aug 08 PHP
PHP中如何定义和使用常量
Feb 28 PHP
使用array mutisort 实现按某字段对数据排序
Jun 18 PHP
PHP类中的魔术方法(Magic Method)简明总结
Jul 08 PHP
smarty模板引擎之分配数据类型
Mar 30 PHP
PHP的几个常用加密函数
Feb 03 PHP
PHP邮箱验证示例教程
Jun 01 PHP
详解Yii实现分页的两种方法
Jan 14 PHP
cakephp常见知识点汇总
Feb 24 PHP
完美解决Thinkphp3.2中插入相同数据的问题
Aug 01 PHP
Yii框架安装简明教程
May 15 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
德劲1107的电路分析与打磨
2021/03/02 无线电
基于OpenCV的PHP图像人脸识别技术
2009/10/11 PHP
php 强制下载文件实现代码
2013/10/28 PHP
PHP将session信息存储到数据库的类实例
2015/03/04 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
PHP连接MSSQL方法汇总
2016/02/05 PHP
在IE上直接编辑网页内容的js代码(IE地址栏js)
2009/04/27 Javascript
javascript 流畅动画实现原理
2009/09/08 Javascript
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
2010/03/31 Javascript
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
2013/11/25 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
javascript事件模型实例分析
2015/01/30 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
webpack4+react多页面架构的实现
2018/10/25 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
django的聚合函数和aggregate、annotate方法使用详解
2019/07/23 Python
Python基于requests库爬取网站信息
2020/03/02 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
linux系统都有哪些运行级别
2016/03/26 面试题
创建服务型党组织实施方案
2014/02/25 职场文书
幼儿园老师寄语
2014/04/03 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
大专学生求职自荐信
2014/07/06 职场文书
先进党支部事迹材料
2014/12/24 职场文书
自愿离婚协议书2015
2015/01/26 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书