也谈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 相关文章推荐
将数字格式的计算结果转为汉字格式
Oct 09 PHP
上传多个文件的PHP脚本
Nov 26 PHP
从网上搜到的phpwind 0day的代码
Dec 07 PHP
php Xdebug 调试扩展的安装与使用.
Mar 13 PHP
实用PHP会员权限控制实现原理分析
May 29 PHP
PHP curl 并发最佳实践代码分享
Sep 05 PHP
PHP程序级守护进程的实现与优化的使用概述
May 02 PHP
PHP 循环删除无限分类子节点的实现代码
Jun 21 PHP
PHP解决URL中文GBK乱码问题的两种方法
Jun 03 PHP
php中error与exception的区别及应用
Jul 28 PHP
PHP简单实现正则匹配省市区的方法
Apr 13 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
Mar 11 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
Laravel 5框架学习之表单
2015/04/08 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
javascript dom 操作详解 js加强
2009/07/13 Javascript
js以对象为索引的关联数组
2010/07/04 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
谈谈JavaScript异步函数发展历程
2015/09/29 Javascript
浅谈JavaScript中的对象及Promise对象的实现
2015/11/15 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
利用yarn实现一个webpack+react种子
2016/10/25 Javascript
详解Angualr 组件间通信
2017/01/21 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
Python中join函数简单代码示例
2018/01/09 Python
TensorFlow神经网络优化策略学习
2018/03/09 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
Python之字符串的遍历的4种方式
2020/12/08 Python
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
大专自我鉴定范文
2013/10/01 职场文书
产品促销活动策划书
2014/01/15 职场文书
奥巴马连任演讲稿
2014/05/15 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
2015小学师德工作总结
2015/07/21 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android