php精确的统计在线人数的方法


Posted in PHP onOctober 21, 2015

这是一个非常精确的,通过php实现统计在线人数的方法,想知道怎么实现的请耐心阅读。

<?php 
$filename='online.txt';//数据文件 
$cookiename='VGOTCN_OnLineCount';//cookie名称 
$onlinetime=600;//在线有效时间,单位:秒 (即600等于10分钟) 
 
$online=file($filename); 
//PHP file() 函数把整个文件读入一个数组中。与 file_get_contents() 类似,不同的是 file() 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败,则返回 false 
$nowtime=$_SERVER['REQUEST_TIME']; 
$nowonline=array(); 
//得到仍然有效的数据 
foreach($online as $line){ 
  $row=explode('|',$line); 
  $sesstime=trim($row[1]); 
  if(($nowtime - $sesstime)<=$onlinetime){//如果仍在有效时间内,则数据继续保存,否则被放弃不再统计 
    $nowonline[$row[0]]=$sesstime;//获取在线列表到数组,会话ID为键名,最后通信时间为键值 
  } 
} 
/* 
@创建访问者通信状态 
使用cookie通信 
COOKIE 将在关闭浏览器时失效,但如果不关闭浏览器,此 COOKIE 将一直有效,直到程序设置的在线时间超时 
*/ 
if(isset($_COOKIE[$cookiename])){//如果有COOKIE即并非初次访问则不添加人数并更新通信时间 
  $uid=$_COOKIE[$cookiename]; 
}else{//如果没有COOKIE即是初次访问 
  $vid=0;//初始化访问者ID 
  do{//给用户一个新ID 
    $vid++; 
    $uid='U'.$vid; 
  }while(array_key_exists($uid,$nowonline)); 
  setcookie($cookiename,$uid); 
} 
$nowonline[$uid]=$nowtime;//更新现在的时间状态 
//统计现在在线人数 
$total_online=count($nowonline); 
//写入数据 
if($fp=@fopen($filename,'w')){ 
  if(flock($fp,LOCK_EX)){ 
    rewind($fp); 
    foreach($nowonline as $fuid=>$ftime){ 
      $fline=$fuid.'|'.$ftime."\n"; 
      @fputs($fp,$fline); 
    } 
    flock($fp,LOCK_UN); 
    fclose($fp); 
  } 
} 
echo 'document.write("'.$total_online.'");';

希望本文所述对大家学习php程序设计有所帮助。

PHP 相关文章推荐
在PHP中利用XML技术构造远程服务(下)
Oct 09 PHP
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
Mar 27 PHP
php函数指定默认值方法的小例子
Dec 04 PHP
在Yii框架中使用PHP模板引擎Twig的例子
Jun 13 PHP
destoon实现调用自增数字从1开始的方法
Aug 21 PHP
写一段简单的PHP建立文件夹代码
Jan 06 PHP
php实现粘贴截图并完成上传功能
May 17 PHP
thinkPHP实现将excel导入到数据库中的方法
Apr 22 PHP
PHP CURL post数据报错 failed creating formpost data
Oct 16 PHP
Laravel如何使用Redis共享Session
Feb 23 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
Jun 16 PHP
PHP后期静态绑定实例浅析
Dec 21 PHP
为你总结一些php信息函数
Oct 21 #PHP
深入理解PHP变量的值类型和引用类型
Oct 21 #PHP
为你总结一些php系统类函数
Oct 21 #PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
Oct 21 #PHP
使用xampp搭建运行php虚拟主机的详细步骤
Oct 21 #PHP
php获取汉字拼音首字母的方法
Oct 21 #PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
Oct 21 #PHP
You might like
一个取得文件扩展名的函数
2006/10/09 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
2020/03/18 PHP
一些不错的js函数ajax
2008/08/20 Javascript
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
IE6下JS动态设置图片src地址问题
2010/01/08 Javascript
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
2010/07/26 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
javascript 回到顶部效果的实现代码
2014/02/17 Javascript
jQuery+CSS3实现树叶飘落特效
2015/02/01 Javascript
jQuery学习笔记之回调函数
2016/08/15 Javascript
网页瀑布流布局jQuery实现代码
2016/10/21 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
Js实现复选框的全选、全不选反选功能代码实例
2020/02/28 Javascript
微信小程序中target和currentTarget的区别小结
2020/11/06 Javascript
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
python实现连续变量最优分箱详解--CART算法
2019/11/22 Python
Python中的全局变量如何理解
2020/06/04 Python
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
澳大利亚100%丝绸多彩度假装商店:TheSwankStore
2019/09/04 全球购物
意大利奢侈品牌在线精品店:Jole.it
2020/11/23 全球购物
请问软件开发中的设计模式你会使用哪些
2015/05/13 面试题
医院护理人员的自我评价分享
2013/10/04 职场文书
预备党员思想汇报
2014/01/08 职场文书
趣味体育活动方案
2014/02/08 职场文书
保密工作实施方案
2014/02/24 职场文书
婚礼答谢宴主持词
2014/03/14 职场文书
2014单位领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
幼儿园国庆节活动总结
2015/03/23 职场文书
小学教师岗位职责
2015/04/02 职场文书
青年联谊会致辞
2015/07/31 职场文书
如何用Python搭建gRPC服务
2021/06/30 Python
一篇文章带你了解Python和Java的正则表达式对比
2021/09/15 Python
浅析CSS在DevTools 中架构演变
2021/10/05 HTML / CSS