您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
使用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怎么对网站的在线人数进行计算的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。