也谈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 相关文章推荐
example2.php
Oct 09 PHP
php disk_free_space 返回目录可用空间
May 10 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
Jun 09 PHP
Codeigniter实现智能裁剪图片的方法
Jun 12 PHP
php计算两个整数的最大公约数常用算法小结
Mar 05 PHP
php源码分析之DZX1.5加密解密函数authcode用法
Jun 17 PHP
PHP中FTP相关函数小结
Jul 15 PHP
thinkphp框架page类与bootstrap分页(美化)
Jun 25 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
Jan 29 PHP
thinkPHP5框架路由常用知识点汇总
Sep 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
香妃
2021/03/03 冲泡冲煮
在字符串中把网址改成超级链接
2006/10/09 PHP
特转载一高手总结PHP学习资源和链接.
2006/12/05 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
基于PHP实现生成随机水印图片
2020/12/09 PHP
JavaScript 创建对象
2009/07/17 Javascript
浅谈javascript的数据类型检测
2010/07/10 Javascript
Jquery中&quot;$(document).ready(function(){ })&quot;函数的使用详解
2013/12/30 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
JavaScript队列、优先队列与循环队列
2016/11/14 Javascript
Angular ui.bootstrap.pagination分页
2017/01/20 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
浅谈Angular 中何时取消订阅
2017/11/22 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
Ubuntu下使用Python实现游戏制作中的切分图片功能
2018/03/30 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
详解Python Celery和RabbitMQ实战教程
2021/01/20 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
11月升旗仪式讲话稿
2014/02/15 职场文书
给小学生的新年寄语
2014/04/04 职场文书
合作协议书范本
2014/04/17 职场文书
宇宙与人观后感
2015/06/05 职场文书
2016年学校“3.12”植树节活动总结
2016/03/16 职场文书
2019年销售人员的职业生涯规划书
2019/03/25 职场文书
详解CSS故障艺术
2021/05/25 HTML / CSS
Mysql中@和@@符号的详细使用指南
2022/06/05 MySQL