Google Chrome — PHP Curl резюме скачать

В настоящее время я пытаюсь загрузить спутниковые изображения из проекта Есы Коперника / Стража с помощью curl. К сожалению, загрузка продолжает останавливаться на отметке 90%, и скрипт php возвращает внутреннюю ошибку сервера (500).

Поэтому я хотел бы возобновить загрузку с определенного номера байта. Кажется, что сервер esa просто игнорирует http-range-header (CURLOPT_RANGE) и CURLOPT_RESUME_FROM тоже ничего не меняет.

Если я использую Google Chrome для загрузки файла вручную, загрузка также прерывается, но продолжается через некоторое время.

Так что, если Google Chrome сможет возобновить загрузку, curl тоже сможет это сделать. Буду признателен за любую помощь, как это сделать.

Некоторые детали:

Файл, который я пытаюсь скачать Вот (420MB), для доступа к нему необходимо зарегистрироваться на scihub.esa.int/dhus/.
Тип контента application/octet-stream

Мой код:

$save_file = fopen($save_filepath, "w+");
$open_file = curl_init(str_replace(" ","%20", $url));
curl_setopt($open_file, CURLOPT_USERPWD, $username.":".$password);
curl_setopt($open_file, CURLOPT_TIMEOUT, 300);
curl_setopt($open_file, CURLOPT_FILE, $save_file);
curl_setopt($open_file, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($open_file, CURLOPT_PROGRESSFUNCTION, "trackprogress");
curl_setopt($open_file, CURLOPT_NOPROGRESS, false);
curl_exec($open_file);
curl_close($open_file);
fclose($save_file);

Он отлично работает для небольших файлов (я протестировал его с некоторыми изображениями и pdf-файлами), и я также могу загрузить большую часть спутникового изображения (первые 380 МБ загружены). Я также пытался увеличить значение тайм-аута, но сценарий завершается задолго до того, как достигнуты 5 минут.

Я старался curl_setopt($open_file, CURLOPT_RESUME_FROM, 1048576); а также curl_setopt($open_file, CURLOPT_RANGE, "1048576-"); но файл всегда начинается с одних и тех же байтов.

РЕДАКТИРОВАТЬ:

Я не могу ответить на мой вопрос, но для этого конкретного случая я нашел обходной путь. Итак, если кто-нибудь прочитает это и также захочет загрузить эти спутниковые изображения с помощью cURL случайно, вот что я сделал:

При загрузке не только файла изображения, но и zip-файла с некоторыми дополнительными данными загрузка все равно останавливается, однако curl_setopt($open_file, CURLOPT_RESUME_FROM, $bytes_already_loaded); есть возможность пропустить ранее загруженные байты и возобновить загрузку (что невозможно для файла изображения). Таким образом, используйте это ссылка на сайт вместо файла изображения.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]