也谈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实现ping
Oct 09 PHP
发布一个用PHP fsockopen写的HTTP下载的类
Feb 22 PHP
精通php的十大要点(上)
Feb 04 PHP
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
Sep 19 PHP
深入HTTP响应状态码速查表的详解
Jun 07 PHP
解析htaccess伪静态的规则
Jun 18 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
php类的扩展和继承用法实例
Jun 20 PHP
简单的pgsql pdo php操作类实现代码
Aug 25 PHP
thinkPHP中钩子的两种配置调用方法详解
Nov 11 PHP
PHP实现二维数组中的查找算法小结
Jun 09 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
Mar 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
无线电广播的开始
2002/01/30 无线电
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
创建、调用JavaScript对象的方法集锦
2014/12/24 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
Node.js下自定义错误类型详解
2016/10/17 Javascript
JS中跳出循环的示例代码
2017/09/14 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
React中获取数据的3种方法及优缺点
2020/02/18 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
python 获取et和excel的版本号
2009/04/09 Python
Python3 入门教程 简单但比较不错
2009/11/29 Python
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
Python的函数的一些高阶特性
2015/04/27 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
利用信号如何监控Django模型对象字段值的变化详解
2017/11/27 Python
Python编程求质数实例代码
2018/01/31 Python
python取代netcat过程分析
2018/02/10 Python
Python框架Flask的基本数据库操作方法分析
2018/07/13 Python
anaconda中更改python版本的方法步骤
2019/07/14 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
Space NK美国站:英国高端美妆护肤商城
2017/05/22 全球购物
配置管理计划的主要内容有哪些
2014/06/20 面试题
机械电子工程专业推荐信范文
2013/11/20 职场文书
销售找工作求职信
2013/12/20 职场文书
自我鉴定书面格式
2014/01/13 职场文书
售后服务承诺书范文
2014/03/26 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
python3操作redis实现List列表实例
2021/08/04 Python