也谈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 Smarty date_format [格式化时间日期]
Mar 15 PHP
ThinkPHP与PHPExcel冲突解决方法
Aug 08 PHP
详解php的魔术方法__get()和__set()使用介绍
Sep 19 PHP
php cURL和Rolling cURL并发方式比较
Oct 30 PHP
php 获取SWF动画截图示例代码
Feb 10 PHP
Symfony生成二维码的方法
Feb 04 PHP
PHP如何使用Memcached
Apr 05 PHP
mac系统下为 php 添加 pcntl 扩展
Aug 28 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
Jul 13 PHP
php实现小程序支付完整版
Oct 09 PHP
Laravel框架自定义公共函数的引入操作示例
Apr 16 PHP
PHP中Session ID的实现原理实例分析
Aug 17 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自动获取关键字的方法
2015/01/06 PHP
PHP编译安装时常见错误解决办法
2015/05/28 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
javascript this用法小结
2008/12/19 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
javascript获取URL参数与参数值的示例代码
2013/12/20 Javascript
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
基于Vue2.0的分页组件
2017/03/16 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
vue实现div拖拽互换位置
2020/07/29 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
Python模拟登录12306的方法
2014/12/30 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
Python绘制正余弦函数图像的方法
2018/08/28 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
海滩咖啡馆:Beach Cafe
2018/02/02 全球购物
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
小型女装店的创业计划书
2014/01/09 职场文书
个人课题方案
2014/05/08 职场文书
班主任寄语2016
2015/12/04 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
推普标语口号大全
2015/12/26 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技