PHP를 사용하여 대용량 파일 스트리밍
과도한 비용을 소비하지 않고 사용자에게 대용량 파일을 한 번에 안전하게 다운로드하도록 제공하려는 시나리오에서 메모리에서 질문이 생깁니다: 어떻게 파일을 효율적으로 스트리밍할 수 있습니까?
file_get_contents()를 사용하여 일반적인 접근 방식을 사용하면 전체 파일 콘텐츠를 동시에 검색하는 것은 잠재적인 메모리 제한으로 인해 비실용적입니다. 이 문제를 해결하려면 관리 가능한 청크로 데이터를 전달하는 스트리밍 방법을 사용하는 것이 좋습니다.
온라인 소스에서 제안된 한 가지 해결책은 readfile_chunked() 함수를 사용하는 것입니다. 이 기능을 사용하면 청크 크기를 지정하고 파일 콘텐츠를 반복적으로 읽고 출력하여 메모리 과부하를 피할 수 있습니다.
제공된 코드 샘플은 이 접근 방식의 구현을 보여줍니다.
// Define the chunk size in bytes define('CHUNK_SIZE', 1024*1024); // Function to read a file and display its content chunk by chunk function readfile_chunked($filename, $retbytes = TRUE) { $buffer = ''; $cnt = 0; $handle = fopen($filename, 'rb'); if ($handle === false) { return false; } while (!feof($handle)) { $buffer = fread($handle, CHUNK_SIZE); echo $buffer; ob_flush(); flush(); if ($retbytes) { $cnt += strlen($buffer); } } $status = fclose($handle); if ($retbytes & $status) { return $cnt; // Return the number of bytes delivered. } return $status; } // Restrict access to logged-in users if ($logged_in) { $filename = 'path/to/your/file'; $mimetype = 'mime/type'; header('Content-Type: '.$mimetype ); readfile_chunked($filename); } else { echo 'Access denied.'; }
이 접근 방식 관리 가능한 청크로 파일을 스트리밍하여 메모리 제약을 피하고 파일을 사용자에게 효율적으로 전달합니다.
위 내용은 메모리 고갈을 방지하기 위해 PHP에서 대용량 파일을 효율적으로 스트리밍하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!