本文实例讲述了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程序设计有所帮助。
本文地址:https://www.stayed.cn/item/11729
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我