php如何实现和精确统计在线人数功能

久伴
久伴
久伴
668
文章
542
评论
2020年8月10日11:38:50 1 119 1202字阅读4分0秒

创建count.php文件粘贴以下代码

注意:online.txt 这个文件给777权限

<?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);

  }

}

?>

调用代码

<?php 

   include('count.php')

    echo '在线用户'.$total_online.'位'; 
 ?>

久伴
php面向对象传递赋值及引用赋值 PHP笔记

php面向对象传递赋值及引用赋值

关键词 1,传递赋值 2,引用赋值 通俗解答 1,传递赋值,创建二个变量$a $b 把$a的值传递给$b 如果$a的值发生变化在下一次输出的时候$a得值发生改变,$b还是$a第一次的赋值,因为传递赋值...
PHP面向对象理解 PHP笔记

PHP面向对象理解

面向对象,无论你是计算机专业,或者培训机构,接触面向对象的语言多半是java,其实其他语言一样也有面向对象只是一个规范性(正则表达式一样,也是不分语言的) 为什么要使用面向对象方式写代码,以下为个人理...
php截取@(字符串)前面的内容或后面内容 PHP笔记

php截取@(字符串)前面的内容或后面内容

substr截取字符串,并显示出来,有三个参数,通俗来讲 第一个参数代表需要截取的内容,第二个参数有正负之分,正数从内容开头截取,负数从内容尾部截取 比如11949420@qq.com 第二个参数填2...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:1   其中:访客  1   博主  0
    • 弥雅 弥雅 4

      学习了,谢谢博主!