php实现统计网站在线人数的方法
本文实例讲述了php实现统计网站在线人数的方法。分享给大家供大家参考。具体实现方法如下:
<?php functiongetIpAddress(){//取得当前用户的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; } functionwriteover($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); } functioncount_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($arras$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程序设计有所帮助。