File_get_contents를 사용한 파일 처리 시 메모리 고갈 발생
PHP에서 대용량 파일로 작업할 때 file_get_contents 함수를 사용하여 전체 파일 내용을 PHP로 가져옵니다. 변수로 인해 메모리 소모 오류가 발생할 수 있습니다. 파일 내용을 담고 있는 변수가 메모리에 상주하기 때문인데, 대용량 파일의 경우 할당된 메모리 한도를 초과할 수 있기 때문입니다.
이 문제를 극복하려면 파일 포인터를 사용하여 파일을 처리하는 것이 보다 효율적인 접근 방식입니다. 덩어리로. 이렇게 하면 언제든지 파일의 현재 부분만 메모리에 유지됩니다.
다음은 이 청크 파일 처리를 구현하는 사용자 정의 함수입니다.
<code class="php">function file_get_contents_chunked($file, $chunk_size, $callback) { try { $handle = fopen($file, "r"); $i = 0; while (!feof($handle)) { call_user_func_array($callback, [fread($handle, $chunk_size), &$handle, $i]); $i++; } fclose($handle); return true; } catch (Exception $e) { trigger_error("file_get_contents_chunked::" . $e->getMessage(), E_USER_NOTICE); return false; } }</code>
이 기능을 사용하려면, 각 데이터 덩어리를 처리하는 콜백 함수를 정의합니다.
<code class="php">$success = file_get_contents_chunked("my/large/file", 4096, function($chunk, &$handle, $iteration) { // Perform file processing here });</code>
또한 정규식 작업을 리팩토링하여 strpos, substr, Trim 및Explore와 같은 기본 문자열 함수를 사용하는 것을 고려하세요. 이렇게 하면 대용량 파일 작업 시 성능이 크게 향상될 수 있습니다.
위 내용은 File_get_contents를 사용하여 PHP에서 대용량 파일을 처리할 때 메모리 고갈을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!