也谈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 相关文章推荐
PHP4实际应用经验篇(9)
Oct 09 PHP
php的access操作类
Apr 09 PHP
PHP 配置open_basedir 让各虚拟站点独立运行
Nov 12 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
Sep 20 PHP
php修改NetBeans默认字体的大小
Jul 02 PHP
浅析php工厂模式
Nov 25 PHP
PHP使用缓存即时输出内容(output buffering)的方法
Aug 03 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
Dec 08 PHP
Zend Framework教程之资源(Resources)用法实例详解
Mar 14 PHP
100行PHP代码实现socks5代理服务器
Apr 28 PHP
PHP实现的多文件上传类及用法示例
May 06 PHP
php实现的简单中文验证码功能示例
Jan 03 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下目前为目最全的CURL中文说明
2010/08/01 PHP
PHP循环语句笔记(foreach,list)
2011/11/29 PHP
PHP文件读写操作相关函数总结
2014/11/18 PHP
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
2012/12/28 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
JS操作CSS随机改变网页背景实现思路
2014/03/10 Javascript
浅谈Node模块系统及其模式
2017/11/17 Javascript
Vue props用法详解(小结)
2018/07/03 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
[03:12]TI9战队档案 - Virtus Pro
2019/08/20 DOTA
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
python实现在目录中查找指定文件的方法
2014/11/11 Python
用Python编写一个国际象棋AI程序
2014/11/28 Python
Python使用django获取用户IP地址的方法
2015/05/11 Python
Python中max函数用法实例分析
2015/07/17 Python
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
Python2包含中文报错的解决方法
2018/07/09 Python
对python3新增的byte类型详解
2018/12/04 Python
flask session组件的使用示例
2018/12/25 Python
Python List cmp()知识点总结
2019/02/18 Python
python处理大日志文件
2019/07/23 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
2019/12/04 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
python梯度下降算法的实现
2020/02/24 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
Django-imagekit的使用详解
2020/07/06 Python
python实现粒子群算法
2020/10/15 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
HTML5中图片之间的缝隙完美解决方法
2017/07/07 HTML / CSS
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
新闻学专业个人求职信写作
2014/02/04 职场文书
财务工作个人总结
2015/02/27 职场文书
导游词之河北滦平金山岭长城
2019/10/16 职场文书