ホームページ  >  記事  >  バックエンド開発  >  file_get_contents 使用時の PHP メモリ枯渇エラーを解決するには?

file_get_contents 使用時の PHP メモリ枯渇エラーを解決するには?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-17 13:35:30326ブラウズ

How to Resolve PHP Memory Exhaustion Error When Using file_get_contents?

file_get_contents での PHP メモリ枯渇エラー

file_get_contents で大量のファイルを読み取ると、メモリ枯渇により PHP の致命的なエラーが発生する可能性があります。たとえば、40 MB のファイルを処理しようとすると、次のエラーが発生します。

<code class="php">PHP Fatal error:  Allowed memory size of 16777216 bytes exhausted (tried to allocate 41390283 bytes)</code>

代替ソリューション

file_get_contents の代わりに、次の代替案を検討してください:

チャンク読み取り

file_get_contents_chunked 関数を使用すると、ファイルを管理可能なチャンクで読み取ることができ、メモリ枯渇の問題を回避できます。

<code class="php">function file_get_contents_chunked($file, $chunk_size, $callback) {
    $handle = fopen($file, "r");
    $i = 0;
    while (!feof($handle)) {
        call_user_func_array($callback, array(fread($handle, $chunk_size), &$handle, $i));
        $i++;
    }
    fclose($handle);
}

// Example usage:
file_get_contents_chunked("my/large/file", 4096, function($chunk, &$handle, $iteration) {});</code>

ネイティブ文字列関数

正規表現を使用する代わりに、strpos、substr、trim、explode などのネイティブ文字列関数を採用することを検討してください。これらの関数はより効率的で、潜在的なメモリの問題を回避します。

正規表現の最適化

大きなファイルを扱う場合、不必要なメモリ消費を最小限に抑えるために正規表現パターンを最適化することが重要です。 。ファイル全体の一致を避け、代わりに小さい特定のパターンに焦点を当てます。

その他の考慮事項

  • PHP メモリ制限を増やす:より大きなファイルの処理に対応するために、PHP のメモリ制限を一時的に増やします。
  • 専用データベースを使用します: 永続的なデータ ストレージの場合は、メモリ内の大きなファイルを操作する代わりにデータベースの使用を検討してください。

以上がfile_get_contents 使用時の PHP メモリ枯渇エラーを解決するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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