这段代码使用了两个函数:sxcs()slzxrs()

sxcs() 函数用于统计累计观看人数,通过读取文件 sxcs.dat 获取当前观看人数,加 1 后写入文件,并返回累计观看人数。

slzxrs() 函数用于获取当前在线人数,通过读写文件 slzxrs.dat 实现。读取文件中的所有记录,删除时间超过 30 秒的记录,添加当前访问者的记录,并返回在线人数。

代码中使用了 getenv('REMOTE_ADDR') 获取访问者的 IP 地址,并通过 time() 函数获取当前时间戳来判断是否超时。

最后,页面中调用这两个函数显示实时更新的在线人数和累计观看人数。

<?php

function sxcs() {
  $list = file_get_contents('sxcs.dat');
  $myfile = fopen("sxcs.dat", "w");
  $sxcs = ($list + 1);
  fwrite($myfile, "$sxcs");
  fclose($myfile);
  return $sxcs;
}

function slzxrs() {
  // 首先你要有读写文件的权限,首次访问肯不显示,正常情况刷新即可
  $online_log = "slzxrs.dat"; // 保存人数的文件到根目录
  $timeout = 30; // 30 秒内没动则认为掉线
  $entries = file($online_log);
  $temp = array();
  for ($i = 0; $i < count($entries); $i++) {
    $entry = explode(',', trim($entries[$i]));
    if (($entry[0] != getenv('REMOTE_ADDR')) && ($entry[1] > time())) {
      array_push($temp, $entry[0] . "," . $entry[1] . "\n"); // 取出其他浏览者的信息, 并去掉超时者, 保存进 $temp
    }
  }
  array_push($temp, getenv('REMOTE_ADDR') . "," . (time() + $timeout) . "\n"); // 更新浏览者的时间
  $slzxrs = count($temp); // 计算在线人数
  $entries = implode("", $temp);
  // 写入文件
  $fp = fopen($online_log, "w");
  flock($fp, LOCK_EX); // flock() 不能在 NFS 以及其他的一些网络文件系统中正常工作
  fputs($fp, $entries);
  flock($fp, LOCK_UN);
  fclose($fp);
  // echo "观看人数:" . $slzxrs . "人";
  return $slzxrs;
}

?>

<h6><center><p>当前在线:<?php echo slzxrs(); ?> 人_ 累计观看人数:<?php echo sxcs(); ?> 人</p></center></h6>
PHP 实时统计网站在线人数和累计观看人数

原文地址: https://www.cveoy.top/t/topic/npTr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录