원격 서버에서 큰 XML 파일 (500MB에서 1GB 사이)을 다운로드 할 때 cURL을 사용하고 있습니다. 스크립트가 작은 테스트 파일에서는 제대로 작동하지만 몇 백 메가 바이트보다 큰 파일을 다운로드하려고 할 때마다 스크립트가 중단 된 것처럼 보입니다. 종료되지 않고 오류 메시지가 나타나지 않고 그냥 멈 춥니 다.큰 파일 (500MB 이상)을 다운로드 할 때 말림이 발생합니다.
나는 명령 줄 (CLI)에서 스크립트를 실행하고 있으므로 PHP 자체가 시간 초과되지 않아야한다. 나는 또한 cURL의 자세한 모드를 시도했지만, 이것은 초기 연결을 넘어서 아무것도 보이지 않습니다. 파일을 다운로드 할 때마다 정확히 같은 크기 (463.3MB)에서 멈 춥니 다. 이 시점에서 파일의 XML이 불완전합니다.
많은 아이디어가 높이 평가됩니다.
$ch = curl_init();
$fh = fopen($filename, 'w');
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_FILE, $fh);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 0);
if(curl_exec($ch) === false)
{
echo 'Curl error: ' . curl_error($ch) . "\n";
}
else
{
echo 'Operation completed without any errors';
}
$response = array(
'header' => curl_getinfo($ch)
);
curl_close($ch);
fclose($fh);
if($response['header']['http_code'] == 200) {
echo "File downloaded and saved as " . $filename . "\n";
}
다시 말하지만,이 스크립트는 작은 파일이 잘 작동하지만 큰 파일 난까지 오류 메시지를 인쇄로하지 않습니다 다운로드하려고합니다.
이 스크립트 (Linode의 Ubuntu 10.04)가 종료 될 수 있습니까? 내가 이해할 수있는 한, 내 웹 서버는 CLI를 통해 실행 중이므로 여기서는 중요하지 않습니다.
감사합니다,
매트
이 옵션을 false로 설정해보십시오. CURLOPT_NOPROGRESS 진행률 표시 줄이 활성화되어있어 실제로 파일을 다운로드 중인지 확인할 수 있습니다. – psion