CURL - как скачать большой файл?

PaulM

Новичок
CURL - как скачать большой файл?

Делаю так:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$URL); // set url to post to
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // allow redirects
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_REFERER, $URL);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");

// ВОТ ТУТ ВОЗВРАЩАЕТ FALSE!!!!
$result = curl_exec($ch); // run the whole process

curl_close($ch);

Почему? $result == false. Если файл маленький - то все ок. Но если большой 10 мегов и более, то false. Ощущение что он в память отведелнную php не помещается. Тогда как не увеличивая лимит для php заставить curl сохранить этот файл напрямую на диск? Можно так? Что если окажется что файл надо скачать 100мегов? Увеличивать лимиты для php опять?

Вообщем как сохранить файл напрямую на диск не считывая его содержимое в переменную?
 

Alexandre

PHPПенсионер
Ощущение что он в память отведелнную php не помещается. Тогда как не увеличивая лимит для php заставить curl сохранить этот файл напрямую на диск? Можно так? Что если окажется что файл надо скачать 100мегов?
для скачки больших файлов существуют иные алгоритмы, например, есть скрипт, который формирует специальную очередь, а по крнону запускаем башскрипт, который организует скачку больших файлов, вне зависимости от лимитов памяти пхп.
 

PaulM

Новичок
ну есть простой алгоритм вызвать exec-ом wget или curl но мне надо бы сделать это без exec'a. Есть такие решения?
 

planarik

Новичок
Нашел в документации
PHP:
$fp = fopen("example_homepage.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
Может подойдет?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
чем тебе while(!feof($url)) fwrite($fp,fread($url,8192)) не подходит?
 
Сверху