也谈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 相关文章推荐
信用卡效验程序
Oct 09 PHP
php 特殊字符处理函数
Sep 05 PHP
php 删除记录同时删除图片文件的实现代码
May 12 PHP
PHP goto语句简介和使用实例
Mar 11 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
May 07 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
Sep 16 PHP
PHP实现操作redis的封装类完整实例
Nov 14 PHP
php生成唯一数字id的方法汇总
Nov 18 PHP
PHP设计模式之观察者模式实例
Feb 22 PHP
程序员的表白神器“520”大声喊出来
May 20 PHP
php实现学生管理系统
Mar 21 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
Oct 11 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
给多个地址发邮件的类
2006/10/09 PHP
用PHP实现多级树型菜单
2006/10/09 PHP
php 页面执行时间计算代码
2008/12/04 PHP
基于simple_html_dom的使用小结
2013/07/01 PHP
php读取富文本的时p标签会出现红线是怎么回事
2014/05/13 PHP
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
XMLHTTPRequest的属性和方法简介
2010/11/23 Javascript
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
jQuery unbind 删除绑定事件详解
2016/05/24 Javascript
清除输入框内的空格
2016/12/21 Javascript
详解javascript立即执行函数表达式IIFE
2017/02/13 Javascript
从零学习node.js之文件操作(三)
2017/02/21 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
JavaScript循环遍历你会用哪些之小结篇
2018/09/28 Javascript
vue打包npm run build时候界面报错的解决
2020/08/13 Javascript
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
简单理解Python中基于生成器的状态机
2015/04/13 Python
利用Python爬取可用的代理IP
2016/08/18 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
如何选择使用结构还是类
2014/05/30 面试题
日化店促销方案
2014/03/26 职场文书
安全标兵事迹材料
2014/08/17 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
高等学院职业生涯规划书范文
2014/09/16 职场文书
2015年元宵节活动总结
2015/02/06 职场文书
中学生学习保证书
2015/02/26 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL