(实用篇)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.'");'; 
?>

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/1428.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
重蔚的头像重蔚管理团队
上一篇 2016年10月24日 09:17
下一篇 2016年10月25日 08:55

相关推荐

  • 十个PHP安全的必备技巧

    你好,PHP 开发人员。 在这篇文章中,我将尝试为你提供一些可以提高 PHP 应用程序安全性的具体步骤。我关注的是 PHP 配置本身,所以我们不会讨论 SQL 注入、HTTPS 或其他与 PHP 无关的问题。我将使用我的docker-ent…

    2022年6月21日
    0119
  • 如何让tomcat支持PHP运行

    java开发者都知道,tomcat是用来部署java web项目的。要求与PHP项目使用相同域名、相同端口,在不使用nginx的情况下如何实现? 得知通过Java Bridge 可以实现tomcat支持运行php运行。 下面是详细步骤。1.环境准备安…

    2023年3月29日
    00
  • PHP实现抓取百度搜索结果,并分析数据结构

    PHP网络爬虫实践:抓取百度搜索结果,并分析数据结构百度的搜索引擎有反爬虫机制,我先直接用guzzle试试水。代码如下:<?php /** * Created by Benjiemin * Date: 2020/3/5 * Time: 14:58 */ require ('./v…

    2022年6月20日 PHP自学教程
    0337
  • 今日分享phpstorm配置php环境的方法。

    PhpStorm配置php环境的方法如下:,,1. 下载并安装好PhpStorm软件。,2. 下载php+apache并安装好,或者直接安装wamp、phpstudy等一键环境都是可以的。,3. 确保已经安装了chrome、Firefox等浏览器。,4. 进入Setti…

    2024年7月13日
    04
  • PHP入门指南:DOM扩展。

    PHP是最常用的网络编程语言之一,其使用广泛,而且应用领域非常广泛。其中,DOM扩展是PHP中用来处理XML文档的一种常用方法。本文将介绍初学者如何使用PHP的DOM扩展来操作XML文档。什么是DOM扩展?DOM(Document Obj…

    2023年5月28日
    01
  • PHP实现即时通讯聊天消息发送功能。

    随着互联网的不断发展,即时通讯已经成为现代社会日常沟通的主要形式,因此实现即时通讯聊天消息发送功能成为了各个网站和应用程序的必备特性。本文将介绍PHP实现即时通讯聊天消息发送功能的步骤和注意事项。一、数…

    2023年5月23日
    027
  • php类的对象及成员属性

    类的定义 class  类名{    访问修饰符 成员属性1;    访问修饰符 成员属性2;    //..... } 成员属性 文档说明: 类的变量成员叫做“属性”,或者叫“字段”、“特征”,在本文档统一称为“属性”。属性声明是由关键字 publi…

    2018年4月9日
    0227
  • PHP的文件上传原理说明

    文件上传的基本介绍、应用场景 点击上传时,照片会上传到哪里去? 当我们点击上传后会将图片、文件等上传到服务器上面,并返回图片的地址,这样,我们只需要给其他用户提供该文件的地址即可。 文件上传的原理说明 …

    2018年9月15日 PHP自学教程
    0281

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息