当前位置:首页 > PHP教程 > php应用 > 列表

php实现统计网站在线人数的方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-26 16:34:24 浏览: 评论:0 

这篇文章主要介绍了php实现统计网站在线人数的方法,通过获取服务器端网络参数及文本文件读写实现统计在线人数的功能,非常简单实用,需要的朋友可以参考下,本文实例讲述了php实现统计网站在线人数的方法,分享给大家供大家参考,具体实现方法如下:

  1. <?php 
  2. function getIpAddress() { // 取得当前用户的IP地址 
  3.  if (getenv('HTTP_CLIENT_IP')) { 
  4.  $ip = getenv('HTTP_CLIENT_IP'); 
  5.  } elseif (getenv('HTTP_X_FORWARDED_FOR')) { 
  6.  $ip = getenv('HTTP_X_FORWARDED_FOR'); 
  7.  } elseif (getenv('REMOTE_ADDR')) { 
  8.  $ip = getenv('REMOTE_ADDR'); 
  9.  } else { 
  10.  $ip = $_SERVER['REMOE_ADDR']; 
  11.  }  
  12.  return $ip
  13. }  
  14. function writeover($filename,$data,$method = 'w',$chmod = 0){ 
  15.  $handle = fopen($filename$method); 
  16.  !handle && die("文件打开失败"); 
  17.  flock($handle, LOCK_EX); 
  18.  fwrite($handle$data); 
  19.  flock($handle, LOCK_UN); 
  20.  fclose($handle); 
  21.  $chmod && @chmod($filename, 0777); 
  22. }  
  23. function count_online_num($time$ip) { 
  24.  $fileCount = './count.txt'
  25.  $count = 0; 
  26.  $gap = 900; //15分钟不刷新页面就 
  27.  if (!file_exists($fileCount)) { 
  28.  $str = $time . "\t" . $ip . "\r\n"
  29.  writeover($fileCount$str'w', 1); 
  30.  $count = 1; 
  31.  } else { 
  32.  $arr = file($fileCount); 
  33.  $flag = 0; 
  34.  foreach($arr as $key => $val) { 
  35.   $val= trim($val); 
  36.   if ($val != "") { 
  37.   list($when$seti) = explode("\t"$val); 
  38.   if ($seti ==$ip) { 
  39.    $arr[$key] = $time . "\t" . $seti
  40.    $flag = 1; 
  41.   } else { 
  42.    $currentTime = time(); 
  43.    if ($currentTime - $when > 900) { 
  44.    unset($arr[$key]); 
  45.    }else
  46.    $arr[$key]=$val
  47.    } 
  48.   }  
  49.   }  
  50.  }  
  51.  if ($flag == 0) { 
  52.   array_push($arr$time . "\t" . $ip); 
  53.  }  
  54.  $count = count($arr); 
  55.  $str = implode("\r\n"$arr); 
  56.  $str.="\r\n"
  57.  writeover($fileCount$str'w', 0); 
  58.  unset($arr); 
  59.  }  
  60.  return $count
  61. }  
  62. $time = time(); 
  63. $ip = getIpAddress(); 
  64. $online_num = count_online_num($time,$ip); 
  65. echo $online_num
  66. ?>

Tags: php网站在线人数

分享到: