当前位置: 首页 > 编程笔记 >

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

阎冠玉
2023-03-14
本文向大家介绍php精确的统计在线人数的方法,包括了php精确的统计在线人数的方法的使用技巧和注意事项,需要的朋友参考一下

这是一个非常精确的,通过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程序设计有所帮助。

 类似资料:
  • 主要内容:使用 HttpSessionListener 和 HttpSessionAttributeListener 实现,使用 HttpSessionBindingListener 实现本节我们利用 Servlet 监听器接口,完成一个统计网站在线人数的案例。当一个用户登录后,显示欢迎信息,同时显示出当前在线人数和用户名单。当用户退出登录或 Session 过期时,从在线用户名单中删除该用户,同时将在线人数减 1。 本案例可以通过如下 2 种方案实现: 使用 HttpSessionListen

  • 本文向大家介绍php+memcache实现的网站在线人数统计代码,包括了php+memcache实现的网站在线人数统计代码的使用技巧和注意事项,需要的朋友参考一下 今天闲来无事,想在博客统计中显示在线人数。在网上找了好多例子,不是数据库存储数据就是文件存储,代码也看起来过于复杂。 晚上回来后,构思了下,看到我服务器中安装有 Memcache 服务,何不用 Memcache 实现呢。 下面就来讲下实

  • 本文向大家介绍php实现统计IP数及在线人数的示例代码,包括了php实现统计IP数及在线人数的示例代码的使用技巧和注意事项,需要的朋友参考一下 写在前面的话 很多人有这样的需求,就是统计网站访问IP以及在线的人数。今天我们就看一下具体实现方法。 开启依赖函数模块 实现这个功能,需要依赖putenv()函数。下面两种方式均可。 更改php.ini文件方法 找到php.ini文件,搜索putenv关键

  • 问题内容: 我遇到了一个问题,我正在开发一个应该能够进行一些数学计算的应用程序。这些计算必须是准确的(或者显然不是错误的) 但是这个简单的代码 给我一个错误的结果c不是预期的0.003048而是0.0030480000000000004这显然是错误的。 第二个代码片段给出了正确的结果。 我知道在使用计算机进行计算时,并不是所有的浮点运算都是精确的,但是我不知道如何解决这个问题。 提前致谢! 路德维

  • 本文向大家介绍php统计数组元素个数的方法,包括了php统计数组元素个数的方法的使用技巧和注意事项,需要的朋友参考一下 count():对数组中的元素个数进行统计; sizeof():和count()具有同样的用途,这两个函数都可以返回数组元素个数.可以得到一个常规标量变量中的元素个数,如果传递给这个函数的数组是一个空数组,或者是一个没有经过设定的变量,返回的数组元素个数就是0; array_co

  • Elasticsearch新手问题。我上了莎士比亚的课。json转换为Elastic,我正试图找出如何进行类似于按说话人从行组中计数(1)的聚合。(“Line”是文档的类型,“speaker”是属性之一。) 现在我有一个这样的查询: 结果看起来不错,但ElasticSearch文档指定术语聚合的文档计数是近似值(https://www.elastic.co/guide/en/elasticsear

  • 本文向大家介绍php简单统计中文个数的方法,包括了php简单统计中文个数的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php简单统计中文个数的方法。分享给大家供大家参考,具体如下: 之前的公司是做外贸的用到的都是英文所以统计的长度的时候是用strlen这个函数,一直也没有错误,但是现在统计中文的时候这个就出错了,现在做一下记录测试 从上面的测试,我们可以看出: strlen 把中文

  • 1、接口声明 在调用接口时必须在https请求的header中携带"token"参数。 token是智齿客服接口开放平台全局唯一的接口调用凭据。 开发者在调用各业务接口时都需使用token,开发者需要进行妥善保存。token的存储至少要保留32个字符空间。token的有效期目前为24个小时,需定时刷新,或根据接口返回的token失效提示,进行重新获取。请求token接口,无论token是否存在,都