欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-13 10:39:34
本文实例讲述了php实现统计网站在线人数的方法。分享给大家供大家参考。具体实现方法如下:

本文实例讲述了php实现统计网站在线人数的方法。分享给大家供大家参考。具体实现方法如下:

<?php
function getipaddress() { // 取得当前用户的ip地址
 if (getenv('http_client_ip')) {
 $ip = getenv('http_client_ip');
 } elseif (getenv('http_x_forwarded_for')) {
 $ip = getenv('http_x_forwarded_for');
 } elseif (getenv('remote_addr')) {
 $ip = getenv('remote_addr');
 } else {
 $ip = $_server['remoe_addr'];
 } 
 return $ip;
} 
function writeover($filename,$data,$method = 'w',$chmod = 0){
 $handle = fopen($filename, $method);
 !handle && die("文件打开失败");
 flock($handle, lock_ex);
 fwrite($handle, $data);
 flock($handle, lock_un);
 fclose($handle);
 $chmod && @chmod($filename, 0777);
} 
function count_online_num($time, $ip) {
 $filecount = './count.txt';
 $count = 0;
 $gap = 900; //15分钟不刷新页面就
 if (!file_exists($filecount)) {
 $str = $time . "\t" . $ip . "\r\n";
 writeover($filecount, $str, 'w', 1);
 $count = 1;
 } else {
 $arr = file($filecount);
 $flag = 0;
 foreach($arr as $key => $val) {
  $val= trim($val);
  if ($val != "") {
  list($when, $seti) = explode("\t", $val);
  if ($seti ==$ip) {
   $arr[$key] = $time . "\t" . $seti;
   $flag = 1;
  } else {
   $currenttime = time();
   if ($currenttime - $when > 900) {
   unset($arr[$key]);
   }else{
   $arr[$key]=$val;
   }
  } 
  } 
 } 
 if ($flag == 0) {
  array_push($arr, $time . "\t" . $ip);
 } 
 $count = count($arr);
 $str = implode("\r\n", $arr);
 $str.="\r\n";
 writeover($filecount, $str, 'w', 0);
 unset($arr);
 } 
 return $count;
} 
$time = time();
$ip = getipaddress();
$online_num = count_online_num($time,$ip);
echo $online_num;
?>

希望本文所述对大家的php程序设计有所帮助。