この記事では、PHP を使用して Web サイト上のオンラインの人数をカウントする方法の例について説明します。皆さんの参考に共有してください。具体的な実装方法は以下の通りです
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
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'); } 他 { $ip = $_SERVER['REMOE_ADDR']; } $ip を返す; } 関数の書き込み($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); } 関数 count_online_num($time, $ip) { $fileCount = './count.txt'; $count = 0; $gap = 900 //ページを 15 分間更新しなかった場合 if (!file_exists($fileCount)) { $str = $time . $ip ; writeover($fileCount, $str, 'w', 1); $count = 1; } 他 { $arr = ファイル($fileCount); $フラグ = 0; foreach($arr as $key => $val) { $val= トリム($val); if ($val != "") { list($when, $seti) =explode("t", $val); if ($seti ==$ip) { $arr[$key] = $time . "t" . $フラグ = 1;} 他 { $currentTime = time(); if ($currentTime - $when > 900) { unset($arr[$key]); }その他{ $arr[$key]=$val; } } } } if ($flag == 0) { array_push($arr, $time . "t" . $ip); } $count = count($arr); $str = implode("rn", $arr); $str.="rn"; writeover($fileCount, $str, 'w', 0); 設定解除($arr); } $count を返す; } $time = time(); $ip = getIpAddress(); $online_num = count_online_num($time,$ip); エコー $online_num; ?>
|