Maison > développement back-end > tutoriel php > PHP compte le nombre de personnes en ligne sur le site

PHP compte le nombre de personnes en ligne sur le site

*文
Libérer: 2023-03-18 14:46:02
original
2920 Les gens l'ont consulté

Comment PHP compte-t-il le nombre de personnes en ligne sur le site ? Cet article présente principalement la méthode de comptage du nombre de personnes en ligne sur un site Web en PHP. Il implémente la fonction de comptage du nombre de personnes en ligne en obtenant les paramètres réseau côté serveur et en lisant et en écrivant des fichiers texte. J'espère que cela aide tout le monde.

La méthode spécifique de mise en œuvre est la suivante :


<?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;
?>
Copier après la connexion

Recommandations associées :

PHP résout le blocage des fichiers de session

Utilisez PHP pour traiter des ressources d'image inexistantes

Polymorphisme PHP et liaison dynamique

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal