2011-07-28 3 views
1

기본적으로 copy()를 사용하여 URL에서 비디오를 다운로드하는 게시 서버에서 다운로드 스크립트를 내 QNAP에 전송했습니다. 어떤 이유로 든 비디오를 다운로드하면 정확히 33,378,304 바이트로 나옵니다. 내 php.ini 파일은 3600 timeout으로 설정되어있어 약간의 차이는 없지만 다른 누구도이 문제가 있습니까? 내가 직접PHP copy() 최대 크기 문제

# php <script path> 

php.ini 파일이 무시되고 전체 파일이 다운로드를 사용하여 스크립트를 실행하면

, 나는이 설정에서 누락 라인이 있어야합니다.

도움을 주시면 감사하겠습니다.

이 upload_max_filesize가 2047M

+1

당신의 PHP 메모리 제한이 어떻게 설정되어? 아마 32 메가 바이트? –

+0

33,378,304 바이트는 31MB입니다. php.ini를 grep하려고 시도하고 31 개가 도움이 될 수 있습니다. – hadvig

+0

@hadvig 파일에 31이 없습니다. – Lewis

답변

0

이 설정되어는 해결 방법보다는 문제에 대한 해결책입니다하지만 당신은 exec("cp $src $dst") 또는 system("cp $src $dst")를 사용하여 시도가

까지 내가 볼 수 있듯이에 대한 제한이 없습니다

PHP에서 copy() 명령을 사용하면 이상한 버그가 발생합니다.

+0

URL에서 다운로드하려면 copy를 사용하고 afaik cp는 동일한 작업을 수행하지 않습니다. – Lewis

+0

당신은'wget'을 제자리에서 사용할 수 있습니다. '시스템 ("wget ​​-O $ dst $ url")'. 파일을 제공하는 http 서버에 대한 액세스 권한이 있습니까? 전송에 관해보고 된 오류를 볼 수 있습니까? 어떤 이유로이 URL에 –

+0

wget이 작동하지 않습니다. 로그를 볼 수 없습니다. – Lewis

-1

post_max_size 값을 변경 했습니까?

-

편집

일부 비디오 서버 (비디오 스트림을 다운로드하는 동안 나는 이미 같은 문제) 비디오의 특정 부분보다 더 많은의 다운로드를 금지하여 자신을 보호합니다.

해결 방법으로

, 당신은 조각으로 비디오 조각을 다운로드하려면이 스크립트를 사용할 수 있습니다 :

function fragmented_download($url, $destination) 
{ 
    $headers = get_headers($url, 1); 
    $downloadsize = $headers["Content-Length"]; 
    for ($filesize = 0 ; $filesize < $downloadsize ; $filesize = filesize($destination)) 
    { 
     exec("wget --continue --output-document='$destination' '$url'"); 
    } 
} 
+0

'post_max_size = 2047 M' – Lewis

+0

으로 설정됩니다. 당신은 질문에서 언급하지 않았으며 종종 문제의 원천이됩니다. –

+0

괜찮습니다. 지금은 몇 시간 동안이 php.ini 파일을 보았습니다. – Lewis