2012-12-14 1 views
1

ftp와 같은 것을 만들려고합니다. 나는 집에서 만든 응용 프로그램과 함께 서버를 만들었습니다. 그리고 나는이 응용 프로그램의 로컬 파일에 액세스 할 수 있도록 모든 파일을 wamp 폴더에 보관하고 싶지 않습니다.오류 324 EMPTY_RESPONSE while echo file_get_contents

이미 많은 작업자가이 작업을 수행 할 수 없으며 브라우저에서 이와 같은 작업을 수행하지 못했습니다. 그러나 어떻게 든 그것을 관리했습니다.

내가 파일을 다운로드하는 데 사용하는 코드입니다 :

function getFile($name,$path) { 
    if(file_exists($path.$name)) { 
     $name = urldecode($name); 
     $fsize = filesize($path.$name); 

     header("Content-disposition: attachment; filename=\"".$name."\""); 
     header("Content-type: application/force-download"); 
     header("Content-length: ".$fsize); 

     echo file_get_contents($path.$name); 
    } 

그리고 그들이있어하지만 난 또한 200 메가 바이트 이상 일부 .exe 파일을 다운로드해야 확장자에 상관없이 작은 파일을 작동하지 않습니다.

나는 이미 php.ini 파일에서 memory_limit를 설정했다. 이것은 내가 가지고있는 첫 번째 문제의 원인 이었지만 지금은 324 오류가 발생한다.

아이디어를 극복하는 방법에 대해 알고 싶습니다.

+0

를 들어

? –

답변

0

file_get_contents를 메모리에있는 첫 번째 읽기 파일에 저장 한 다음 반환합니다. 파일 크기가 200MB 인 경우 하나의 스크립트에 200MB 이상의 메모리가 필요합니다.

수정하려면 블록 단위로 파일을 읽고 출력해야합니다. 예를 들어이 코드에서`file_put_contents`을 saids

$fp = fopen($path.$name, "rb"); 
if ($fp) { 
    while(!feof($fp)) { 
     $str = fread($fp, 1024); 
     echo $str; 
    } 
    fclose($fp); 
} 
+0

고마워요.하지만 잊어 버리시는 분 : ob_flush(); flush(); –

+0

원한다면 추가 할 수 있습니다. 그러나이 코드는 file_get_contents의 변경 호출 – newman

관련 문제