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中文网其他相关文章!