>백엔드 개발 >PHP 튜토리얼 >PHP는 웹사이트에 온라인에 있는 사람의 수를 계산합니다.

PHP는 웹사이트에 온라인에 있는 사람의 수를 계산합니다.

*文
*文원래의
2017-12-26 14:52:202911검색

PHP는 웹사이트에 온라인에 있는 사람의 수를 어떻게 계산하나요? 이 글에서는 주로 PHP로 웹사이트에 접속한 사람 수를 세는 방법을 소개합니다. 서버 측 네트워크 매개변수를 얻고 텍스트 파일을 읽고 쓰는 방식으로 온라인에 있는 사람 수를 세는 기능을 구현합니다. 그것이 모두에게 도움이 되기를 바랍니다.

구체적인 구현 방법은 다음과 같습니다.


<?php
function getIpAddress() { // 取得当前用户的IP地址
 if (getenv(&#39;HTTP_CLIENT_IP&#39;)) {
 $ip = getenv(&#39;HTTP_CLIENT_IP&#39;);
 } elseif (getenv(&#39;HTTP_X_FORWARDED_FOR&#39;)) {
 $ip = getenv(&#39;HTTP_X_FORWARDED_FOR&#39;);
 } elseif (getenv(&#39;REMOTE_ADDR&#39;)) {
 $ip = getenv(&#39;REMOTE_ADDR&#39;);
 } else {
 $ip = $_SERVER[&#39;REMOE_ADDR&#39;];
 } 
 return $ip;
} 
function writeover($filename,$data,$method = &#39;w&#39;,$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 = &#39;./count.txt&#39;;
 $count = 0;
 $gap = 900; //15分钟不刷新页面就
 if (!file_exists($fileCount)) {
 $str = $time . "\t" . $ip . "\r\n";
 writeover($fileCount, $str, &#39;w&#39;, 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, &#39;w&#39;, 0);
 unset($arr);
 } 
 return $count;
} 
$time = time();
$ip = getIpAddress();
$online_num = count_online_num($time,$ip);
echo $online_num;
?>

관련 권장 사항:

PHP는 세션 파일 차단을 해결합니다

PHP를 사용하여 존재하지 않는 이미지 리소스를 처리합니다

PHP 다형성 동적 바인딩

위 내용은 PHP는 웹사이트에 온라인에 있는 사람의 수를 계산합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.