也谈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的FTP学习(一)[转自奥索]
Oct 09 PHP
PHP开发需要注意的安全问题
Sep 01 PHP
判断PHP数组是否为空的代码
Sep 08 PHP
深入解析php之sphinx
May 15 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
Jun 21 PHP
Laravel 5 框架入门(四)完结篇
Apr 09 PHP
yii数据库的查询方法
Dec 28 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
Nov 30 PHP
php中__toString()方法用法示例
Dec 07 PHP
PHP session垃圾回收机制实例分析
Jun 28 PHP
php弹出提示框的是实例写法
Sep 26 PHP
Yii框架视图、视图布局、视图数据块操作示例
Oct 14 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与javascript的两种交互方式
2006/10/09 PHP
php explode函数实例代码
2012/02/27 PHP
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
js cookies实现简单统计访问次数
2009/11/24 Javascript
js浏览器本地存储store.js介绍及应用
2014/05/13 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
jQuery插件echarts实现的多折线图效果示例【附demo源码下载】
2017/03/04 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
vue.js路由跳转详解
2017/08/28 Javascript
JavaScript屏蔽Backspace键的实现代码
2017/11/02 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
element 动态合并表格的步骤
2020/12/31 Javascript
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
解决python2.7 查询mysql时出现中文乱码
2016/10/09 Python
Python3 replace()函数使用方法
2018/03/19 Python
Python中@property的理解和使用示例
2019/06/11 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
Pytorch 保存模型生成图片方式
2020/01/10 Python
Python利用Scrapy框架爬取豆瓣电影示例
2020/01/17 Python
matplotlib教程——强大的python作图工具库
2020/10/15 Python
HTML5中的网络存储实现方式
2020/04/28 HTML / CSS
匡威帆布鞋美国官网:Converse美国
2016/08/22 全球购物
美国基督教约会网站:ChristianCafe.com
2020/02/04 全球购物
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
员工考核管理制度
2014/02/02 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
赵乐秦在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
健康状况证明书
2014/11/26 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
导游词之临安白水涧
2019/11/05 职场文书
vue实现简单数据双向绑定
2021/04/28 Vue.js
Golang 并发编程 SingleFlight模式
2022/04/26 Golang