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 等原生字串函數。這些函數效率更高,並且可以避免潛在的記憶體問題。
正規表示式最佳化
處理大檔案時,最佳化正規表示式模式以最大程度地減少不必要的記憶體消耗至關重要。避免匹配整個文件,而是專注於較小的特定模式。
其他注意事項
以上是如何解決使用 file_get_contents 時 PHP 記憶體耗盡錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!