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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-31 21:30:02429ブラウズ

How to Efficiently Count Lines in Large Text Files in PHP?

大きなテキスト ファイルの行を数える効率的な方法

大きなテキスト ファイル (200MB 以上) の行を数えると、PHP でメモリの問題が発生する可能性があります。ファイル全体をメモリにロードして file() を使用する従来の方法では、メモリの枯渇により致命的なエラーが発生する可能性があります。

これに対処するには、より効率的なアプローチは fgets() または fgetc() を使用することです。これらの関数は、ファイル全体をメモリにロードせずに、それぞれファイルを 1 行ずつ、または 1 文字ずつ読み取ります。 fgets() を使用した例を次に示します。

<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 行をメモリに読み取るため、メモリ使用量が大幅に削減されます。

あるいは、fgetc() を使用することもできます。行末文字をカウントするには:

<code class="php">$file = "largefile.txt";
$linecount = 0;
$handle = fopen($file, "r");
while(!feof($handle)){
  $line = fgetc($handle);
  if($line == "\n" || $line == "\r\n"){
    $linecount++;
  }
}
fclose($handle);
echo $linecount;</code>

この方法でもメモリ使用量は少なくなりますが、次の理由により速度が遅くなる可能性があります。各文字の行末文字をチェックするオーバーヘッド。

これらの手法により、メモリの問題を発生させることなく、大きなテキスト ファイルの効率的な行カウントが可能になります。単一行がメモリ制限を超える場合、これらのメソッドでも制限が発生する可能性があることに注意してください。

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

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