2013-09-02 17 views
0

저는 PHP로 jQuery를 사용하고 있습니다.PHP로 큰 파일 다운로드

function downloadFile($sFile){ 
     #Main function 
     header('Content-Type: '.mime_content_type($sFile)); 
     header('Content-Description: File Transfer'); 
     header('Content-Length: ' . filesize($sFile)); 
     header('Content-Disposition: attachment; filename="' . basename($sFile) . '"'); 
     readfile($sFile); 
    } 

나는이 스크립트를 통해 파일을 다운로드 할 수 있습니다, 그러나 (1GB 같은) 큰 파일의 경우 ReadFile을 기능은 다운로드 시작될 때까지 자신의 시간이 필요합니다 : 나는 PHP로 간단한 다운로드 기능을 작성했습니다. 다운로드가 실제로 시작될 때까지 잠깐 기다려야합니다. 내 스크립트를 최적화하는 방법에 대한 아이디어가 있으니 다운로드가 바로 시작 되니?

+2

작은 단위로 파일을 보냅니다. 즉, readfile을 사용하지 않고 fopen/fread 조합을 사용하고 몇 킬로 비트마다 반복 출력합니다. 구현에 대한 자세한 내용은 다음 URL을 확인하십시오. http://stackoverflow.com/questions/14664409/fread-a-lot-slower-for-downloads-than-readfile –

+0

여기를 참조하십시오 - https://stackoverflow.com/ 질문/47827768/how-to-download-large-files-with-php/47827769 # 47827769 – Aplextor

답변

0

.htaccess 파일에 적절한 헤더를 설정하도록 Apache를 구성 할 수 있습니다. 그런 다음 PHP 페이지 대신 파일에 직접 링크 할 수 있습니다. 이렇게하면 서버로드가 줄어 듭니다.

물론 PHP 스크립트가 헤더 설정 (인증과 같은) 이외의 기능을 수행하는 경우 이는 선택 사항이 아닙니다. PHP를 통해 파일을 @ N.B와 같이 청크로 전달해야합니다. 그의 코멘트에서 언급한다.