也谈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 相关文章推荐
计算2000年01月01日起到指定日的天数
Oct 09 PHP
改变Apache端口等配置修改方法
Jun 05 PHP
PHP操作xml代码
Jun 17 PHP
在php和MySql中计算时间差的方法
Apr 22 PHP
PHP将回调函数作用到给定数组单元的方法
Aug 19 PHP
封装ThinkPHP的一个文件上传方法实例
Oct 31 PHP
php运行时动态创建函数的方法
Mar 16 PHP
YII动态模型(动态表名)支持分析
Mar 29 PHP
Yii2分页的使用及其扩展方法详解
May 23 PHP
php好代码风格的阶段性总结
Jun 25 PHP
删除PHP数组中的重复元素的实现代码
Apr 10 PHP
tp5.1 框架查询表达式用法详解
May 25 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
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
详解php反序列化
2020/06/10 PHP
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
js数组操作常用方法
2014/05/08 Javascript
JavaScript中Function详解
2015/02/27 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
VueJS事件处理器v-on的使用方法
2017/09/27 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
[42:20]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python中time模块和datetime模块的用法示例
2016/02/28 Python
Python更新数据库脚本两种方法及对比介绍
2017/07/27 Python
Windows系统下多版本pip的共存问题详解
2017/10/10 Python
Python实现的计数排序算法示例
2017/11/29 Python
Python 修改列表中的元素方法
2018/06/26 Python
python 寻找list中最大元素对应的索引方法
2018/06/28 Python
Django中的Model操作表的实现
2018/07/24 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
pytorch:torch.mm()和torch.matmul()的使用
2019/12/27 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
HTML5 Web 存储详解
2016/09/16 HTML / CSS
企业治理工作自我评价
2013/09/26 职场文书
电脑专业个人求职信范文
2014/02/04 职场文书
2014年中班元旦活动方案
2014/02/14 职场文书
职称评定自我鉴定
2014/03/18 职场文书
电子专业求职信
2014/06/19 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书