2012-01-14 3 views
3

대용량 파일 (2GB)이 있으며 PHP를 사용하여 서버 B에서 서버 A로 다운로드하고 싶습니다.PHP를 사용하여 원격 파일 (2GB)을 다운로드하십시오.

PHP를 사용하여 FTP와 CURL을 시도했지만 성공하지 못했습니다. 0 값으로 set_time_limit()를 설정하더라도 TIMEOUT REQUEST 오류를 반환합니다. 여기

내 코드입니다 : 파일을 업로드 시간 초과가 발생하는 경우, 당신은 당신의 경우 ftp_pasv()

bool ftp_pasv (resource $ftp_stream , bool $pasv) 

살펴있을 수 있습니다

<?php 

set_time_limit(0) 

$local_file = 'file.zip'; 
$server_file = '/www/file.zip'; 

$conn_id = ftp_connect("ftp.webmashing.com"); 

$login_result = ftp_login($conn_id, "USERNAME", "PASSWORD"); 

if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) { 
echo "Successfully written to $local_file\n"; 
} else { 
echo "There was a problem\n"; 
} 

ftp_close($conn_id); 

?> 
+1

'safe_mode'가 켜져 있습니까? 제쳐두고 : 나는 그 큰 (cronjobs, 또는 gearman 노동자) 경우이 아닌 HTTP 프로세스에 위임합니다. – Wrikken

답변

0

,이 시도 :

$conn_id = ftp_connect("ftp.webmashing.com"); 

$login_result = ftp_login($conn_id, "USERNAME", "PASSWORD"); 

ftp_pasv($conn_id, true); 
0

호출하면 set_time_limit()는 제한 시간 카운터를 0에서 다시 시작합니다. 즉, 시간 제한이 기본값 인 30 초이고 스크립트 실행에 25 초 (set_time_limit (20)와 같은 호출이 이루어진 경우), 스크립트는 시간 초과되기 전에 총 45 초 동안 실행됩니다. php.ini의 "max_execution_time"지시문을 확인하십시오.

+0

예,하지만 set_time_limit (0)은 시간 초과를 완전히 비활성화합니다. –

0

(PHP 파일이 실행되는 위치에 따라 다름) 가능한 경우 max_execution_time을 더 오래 변경할 수 있습니다.

자, 내가 대신 (당신은 권리가 있다면), php 파일에서 호출 된 명령 행에서 그것을 할 것입니다. 커맨드 라인은 결과를 특정 파일에 기록 할 것이므로 그 파일의 내용을 확인하기 만하면됩니다.

일단 결과가 작성되면 (예 : 리눅스에서 항상 성공으로 "0"으로 표시) 원하는대로 할 수 있습니다.

프런트 엔드에서 약간 아약스 다운로드 상태를 얻는 것도 유용 할 수 있습니다!

그러나 항상 그렇듯이 쉘 명령을 실행할 수 있는지 여부에 달려 있습니다.

관련 문제