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程序设计有所帮助。