現在の位置: ホーム> 最新記事一覧> ログ分析におけるIP頻度に関する統計

ログ分析におけるIP頻度に関する統計

M66 2025-06-07

ログ分析を実行するときは、通常、異なるIPアドレスの発生頻度をカウントする必要があります。 PHPは、このようなタスクの処理に役立つ多くの強力な組み込み関数を提供します。今日は、 array_count_values関数を使用して、ログ内の各IPの発生周波数をカウントする方法を紹介します。これは、関数の使用方法を示すサンプルコードです。

まず、ログの構造を見てみましょう。ログファイルがあるとします。各行は、次の形式でアクセス要求を記録します。

 2025-04-17 12:34:56 192.168.1.1 /home
2025-04-17 12:35:00 192.168.1.2 /about
2025-04-17 12:36:01 192.168.1.1 /contact
2025-04-17 12:37:02 192.168.1.3 /home
2025-04-17 12:38:05 192.168.1.1 /blog

上記のログは、各訪問者のIPアドレスとアクセスするページパスを記録します。私たちの目標は、各IPアドレスがログに表示される頻度をカウントすることです。

ステップ1:ログファイルを読み取ります

まず、ログファイルのコンテンツをPHPに読み取る必要があります。これは、ファイル関数またはfile_get_contentsを使用して実装できます。

 <?php
// ログファイルを読み取ります
$log = file('path_to_log_file.log');
?>

ステップ2:IPアドレスを抽出します

次に、各行からIPアドレスを抽出する必要があります。各行のIPアドレスがログの2番目のフィールドに記録されていると仮定すると、各行のコンテンツをエクスプロイト関数に分割してから、IPアドレスを抽出できます。

 <?php
// 空の配列ストアを初期化します IP 住所
$ips = [];

foreach ($log as $line) {
    // 各線をスペースで分割します,仮定 IP それは2番目のフィールドです
    $parts = explode(' ', $line);
    // 意思 IP 住所添加到数组中
    $ips[] = $parts[1];
}
?>

ステップ3:array_count_valuesを使用して周波数をカウントします

すべてのIPアドレスを抽出したら、PHPのarray_count_values関数を使用して、各IPアドレスの発生周波数をカウントできます。

 <?php
// 統計 IP 住所出现的频率
$ip_counts = array_count_values($ips);

// 出力結果
foreach ($ip_counts as $ip => $count) {
    echo "IP: $ip - Count: $count\n";
}
?>

ステップ4:サンプル出力

次のログがある場合:

 2025-04-17 12:34:56 192.168.1.1 /home
2025-04-17 12:35:00 192.168.1.2 /about
2025-04-17 12:36:01 192.168.1.1 /contact
2025-04-17 12:37:02 192.168.1.3 /home
2025-04-17 12:38:05 192.168.1.1 /blog

上記のPHPコードを実行した後、出力は次のとおりです。

 IP: 192.168.1.1 - Count: 3
IP: 192.168.1.2 - Count: 1
IP: 192.168.1.3 - Count: 1

ステップ5:ログのURLドメイン名を交換します

ログにもURLが含まれており、これらのURLのドメイン名をM66.netに置き換える必要があるとします。 str_replace関数を使用して実装できます。