ホームページ  >  記事  >  バックエンド開発  >  PHP でファイルの最後の N 行を効率的に読み取るにはどうすればよいですか?

PHP でファイルの最後の N 行を効率的に読み取るにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-03 11:37:02938ブラウズ

How to Efficiently Read the Last N Lines of a File in PHP?

PHP でのファイル末尾の読み取りの最適化

目的: ファイルから最後の N 行を効率的に取得する.

解決策のアプローチ:

1.単純なメソッド:

  • file() 関数を利用して、ファイル全体を配列にロードします。
  • 配列のスライスを使用して、末尾から必要な行数を取得します。

2.外部スクリプト依存:

  • システム上で tail コマンドを呼び出します。
  • tail が使用可能な場合にのみ実行可能です。

3 。シングルバイト検索:

  • ファイルを逆方向​​に反復処理し、改行文字を検索します。

4.マルチバイト バッファ:

  • 固定サイズのバッファを利用して、大きなファイルの読み取りを最適化します。

5.動的バッファ:

  • 要求された行数に基づいてバッファ サイズを拡張します。

パフォーマンス分析:

比較テストは、10 KB ~ 10 MB の範囲のファイルで実施されました。

100 KB ファイル:

  • 動的緩衝液 (ソリューション #5) は、すべての行数で最高のパフォーマンス。
  • 単純なソリューション (ソリューション #1) は、メモリが枯渇する可能性があるため不適切でした。

10 MB ファイル:

  • ソリューション #5 が依然として最も効率的な選択肢でした。
  • ソリューション #1 はメモリ使用量が多すぎるため実用的ではないことが判明しました。

10 KB ファイル:

  • 単純なソリューション (ソリューション #1) は、メモリ フットプリントが低いため、非常に優れたパフォーマンスを発揮しました。
  • ソリューション #4 と #5 も良好な結果をもたらしました。

結論:

一般的な使用例と最適なパフォーマンスについては、ソリューション #5 (動的バッファ) を強くお勧めします。

注意事項:

メモリの問題を防ぐため、10 KB を超えるファイルの場合は解決策 #1 を回避する必要があります。

解決策 #2 および #3 #2 は外部コマンドに依存しており、#3 は行数が増えるとパフォーマンスが低下するため、 は最適ではありません。

以上がPHP でファイルの最後の N 行を効率的に読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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