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

  • Автор темы Автор темы PaulM
  • Дата начала Дата начала

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 опять?

Вообщем как сохранить файл напрямую на диск не считывая его содержимое в переменную?
 
Ощущение что он в память отведелнную php не помещается. Тогда как не увеличивая лимит для php заставить curl сохранить этот файл напрямую на диск? Можно так? Что если окажется что файл надо скачать 100мегов?
для скачки больших файлов существуют иные алгоритмы, например, есть скрипт, который формирует специальную очередь, а по крнону запускаем башскрипт, который организует скачку больших файлов, вне зависимости от лимитов памяти пхп.
 
ну есть простой алгоритм вызвать exec-ом wget или curl но мне надо бы сделать это без exec'a. Есть такие решения?
 
Нашел в документации
PHP:
$fp = fopen("example_homepage.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);

Может подойдет?
 
чем тебе while(!feof($url)) fwrite($fp,fread($url,8192)) не подходит?
 
Сверху