Скажите браузеру, чтобы начать загрузку, так как cURL получает первый кусок файла?

Я хочу загрузить удаленный файл в браузер, используя cURL, размер файла более 400 МБ. В приведенном ниже коде cURL ожидает загрузки (слишком длинного) всего файла в память, и только после этого браузер спрашивает, где его найти и начинает скачивать.

Как исправить код, чтобы cURL получил первый чанк, и он велел браузеру немедленно начать загрузку, не дожидаясь, пока он загрузит все в память php?

Код:

<?php

header("Content-Disposition: attachment; filename=\"How to Use Git and GitHub Videos.zip\"");
header("Content-type: application/octet-stream");
header("Content-Transfer-Encoding: binary");

$url = "http://zips.udacity-data.com/ud775/How%20to%20Use%20Git%20and%20GitHub%20Videos.zip";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($ch, $buffer) {
echo $buffer;
return strlen($buffer);
});

curl_exec ($ch);
curl_close($ch);

?>

0

Решение

Вы можете устранить проблему (и даже не использовать curl):
Напишите перенаправление к реальному файлу, вместо того, чтобы загружать его самостоятельно и затем отправлять. Вы сэкономите пропускную способность, память и время.

<?php
$url = "http://zips.udacity-data.com/ud775/How%20to%20Use%20Git%20and%20GitHub%20Videos.zip";

header("Location: $url");
?>
0

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

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

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