ホームページ  >  記事  >  バックエンド開発  >  大きなテキスト ファイル (200 MB) の行数を効率的にカウントするにはどうすればよいですか?

大きなテキスト ファイル (200 MB) の行数を効率的にカウントするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-02 07:38:02387ブラウズ

How to Efficiently Count Lines in Large Text Files (200 MB )?

メモリ エラーなしで大きなテキスト ファイル (200 MB ) の行数をカウントする

file($path) を使用して大きなテキスト ファイルの行数をカウントすると、次のようなメモリ枯渇エラーが発生する可能性があります。ファイル全体がメモリにロードされます。この問題に対処するには、より効率的でメモリを節約するアプローチが必要です。

行を効率的にカウントする方法の 1 つは、fgets() 関数を使用することです。一度に 1 行ずつ読み取り、処理することで、ファイル全体をメモリにロードすることを回避できます。

<code class="php">$file = "largefile.txt";
$linecount = 0;
$handle = fopen($file, "r");

while (!feof($handle)) {
  $line = fgets($handle);
  $linecount++;
}

fclose($handle);

echo $linecount;</code>

このコードは、読み取り用にファイルを開き、fgets() を使用して一度に 1 行ずつ読み取り、インクリメントします。

もう 1 つのアプローチは、行末文字をカウントすることです。

<code class="php">$file = "largefile.txt";
$linecount = 0;
$handle = fopen($file, "r");

while (!feof($handle)) {
  $line = fgets($handle, 4096);
  $linecount += substr_count($line, PHP_EOL);
}

fclose($handle);

echo $linecount;</code>
は、非常に長い行が含まれる可能性のあるファイルに特に便利です。

ここでは、substr_count() を使用して、読み取られたデータの各チャンク内の改行の数をカウントします。

これらのメソッドはどちらも、ファイル全体をメモリにロードするのではなく、行を段階的に処理するため、メモリ使用量が少なくなります。

以上が大きなテキスト ファイル (200 MB) の行数を効率的にカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。