2013-03-12 2 views
0

제가 소유하고있는 원격 서버에서 직접 링크로 파일을 다운로드하는 PHP 스크립트가 있습니다. 때로는 큰 파일 (~ 500-600 MB) 및 경우에 따라 작은 파일 (~ 50-100 MB).PHP 스크립트가 갑자기 멈추지 않고 멈 춥니 다.

스크립트의 일부 코드 :

나는 큰 파일을 다운로드하고 웹 브라우저에서 스크립트를 실행하는 경우
$links[0]="file_1"; 
$links[0]="file_2"; 
$links[0]="file_3"; 

for($i=0;$i<count($links);$i++){ 

    $file_link=download_file($links[$i]); //this function downloads the file with curl and returns the path to the downloaded file in local server 
    echo "Download complete"; 
    rename($file_link,"some other_path/..."); //this moves the downloaded file to some other location 
    echo "Downloaded file moved"; 
    echo "Download complete"; 

} 

내 문제는 완료하는 데 5~10분 개까지 소요하고 스크립트 에코 개까지 "다운로드 완료입니다 "그러면 그것은 완전히 죽습니다. 나는 항상 스크립트가 죽기 전에 다운로드되는 파일이 100 % 다운로드되었음을 발견했다.

반면에 웹 브라우저에서 50-100MB와 같은 작은 파일을 다운로드하거나 명령 셸에서 스크립트를 실행하면이 문제가 전혀 발생하지 않으며 스크립트가 완전히 완료됩니다.

나는 이것에 대해 내 자신의 VPS를 사용하고 있으며 서버에 시간 제한이 없습니다. 치명적인 오류나 메모리 과부하 문제는 없습니다.

또한 ssh2_sftp을 사용하여 원격 서버에서 파일을 복사했습니다. 하지만 웹 브라우저에서 실행하면 같은 문제가 발생합니다. 항상 파일을 다운로드하고 다음 줄을 실행 한 다음 죽습니다. 아주 이상한!

이 문제를 극복하려면 어떻게해야합니까? 당신이 큰 파일을 다운로드 할 수 있는지 확인하려면

+1

웹 서버의 오류 로그를 확인 했습니까? –

+0

주제를 벗어나서 죄송합니다.하지만 저항 할 수 없었습니다. "640KB는 모든 사람에게 충분해야합니다"라는 시대를 기억합니다. 그리고 지금, 50-100 MB는 "작은 파일"입니다. – Voitcus

답변

0

, 당신이 있는지 확인해야합니다 : PHP 최대 실행 시간 제한이 충분히 높게 설정되어

  • 사용할 수

    1. 충분한 메모리를.

    ssh2_sftp (당신이 PHP를 통해 실행한다고 가정)에서 판단하면 문제는 2 번째입니다. 오류 (-logs)를 점검하여 이것이 진정한 오류인지 확인하십시오. 그렇다면 설정/php.ini에서 최대 실행 시간을 단순히 늘리면 고칠 수 있습니다.

    참고 : PHP에서 이러한 큰 파일을 처리하지 못하도록하는 것이 좋습니다. PHP가 가비지 콜렉션 문제를 가지고 있기 때문에 다운로드를 할 수있는 프로그램을 (system() 또는 exec()을 통해) 호출하십시오.

  • +0

    오류 메시지를 검색해야하는 파일을 설명해 주시겠습니까? 확인 된 apache error.log, ssl_error_log - 오류 메시지가 없습니다. 아파치가 메시지를 남기지 않고 다시 시작하는 것이 가능한가? – Tamara

    관련 문제