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抓取https的内容的代码
Apr 06 PHP
Windows下安装Memcached的步骤说明
Apr 25 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
May 10 PHP
php判断类是否存在函数class_exists用法分析
Nov 14 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
Dec 16 PHP
php关联数组快速排序的方法
Apr 17 PHP
php去掉文件前几行的方法
Jul 29 PHP
PHP 接入微信扫码支付总结(总结篇)
Nov 03 PHP
php的4种常用运行方式详解
Dec 22 PHP
php通过各种函数判断0和空
Jul 04 PHP
PHP基于curl模拟post提交json数据示例
Jun 22 PHP
php连接mysql数据库最简单的实现方法
Sep 24 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
php 函数使用方法与函数定义方法
2010/05/09 PHP
获取URL文件名后缀
2013/10/24 PHP
PHP中mysql_field_type()函数用法
2014/11/24 PHP
php使用cookie实现记住登录状态
2015/04/27 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
Javascript中的相等与不等运算
2010/04/25 Javascript
JQuery操作单选按钮以及复选按钮示例
2013/09/23 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
jquery自定义插件——window的实现【示例代码】
2016/05/06 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
2016/08/17 Javascript
vue2.0中goods选购栏滚动算法的实现代码
2017/05/17 Javascript
js数组去重的N种方法(小结)
2018/06/07 Javascript
vue下载excel的实现代码后台用post方法
2019/05/10 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
Python中的元组介绍
2019/01/28 Python
Python帮你微信头像任意添加装饰别再@微信官方了
2019/09/25 Python
Python队列、进程间通信、线程案例
2019/10/25 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
2019/11/08 Python
简述python Scrapy框架
2020/08/17 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
公益广告宣传方案
2014/02/28 职场文书
工作求职自荐信
2014/06/13 职场文书
临床专业自荐信
2014/06/22 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
上诉状格式
2015/05/23 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
三八节祝酒词
2015/08/11 职场文书
Win11自动黑屏怎么办 Win11自动黑屏设置教程
2022/07/15 数码科技