>  기사  >  백엔드 개발  >  file_get_contents를 사용할 때 PHP 메모리 고갈 오류를 해결하는 방법은 무엇입니까?

file_get_contents를 사용할 때 PHP 메모리 고갈 오류를 해결하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-17 13:35:30248검색

How to Resolve PHP Memory Exhaustion Error When Using file_get_contents?

file_get_contents의 PHP 메모리 고갈 오류

file_get_contents로 광범위한 파일을 읽으면 메모리 고갈로 인해 PHP 치명적인 오류가 발생할 수 있습니다. 예를 들어, 40MB 파일을 처리하려고 하면 다음 오류가 발생합니다.

<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 및explod와 같은 기본 문자열 기능을 사용하는 것이 좋습니다. 이러한 기능은 더 효율적이며 잠재적인 메모리 문제를 방지합니다.

정규식 최적화

대용량 파일로 작업할 때 정규식 패턴을 최적화하여 불필요한 메모리 소비를 최소화하는 것이 중요합니다. . 전체 파일 일치를 피하고 대신 더 작은 특정 패턴에 집중하세요.

기타 고려 사항

  • PHP 메모리 제한을 늘리세요: 다음을 수행할 수 있습니다. 더 큰 파일 처리를 수용하기 위해 PHP 메모리 제한을 일시적으로 늘립니다.
  • 전용 데이터베이스 사용: 영구 데이터 저장의 경우 메모리에서 대용량 파일을 조작하는 대신 데이터베이스 사용을 고려하세요.

위 내용은 file_get_contents를 사용할 때 PHP 메모리 고갈 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.