Использование CURL / PHP для загрузки с FTP в кусках для сохранения памяти

Я хочу использовать этот пример:

https://stackoverflow.com/a/5830599

В значительной степени по этой причине, упомянутой на этой странице.

Я пытаюсь обслуживать более крупные файлы (в общем, 100-200 месяцев) и нужно «выводить» данные в куски, а не читать все в памяти с помощью curl_exec (). Мой поставщик веб-хоста позволяет мне 64 мегабайта памяти, поэтому я не могу сразу прочитать эту информацию.

Какие-нибудь предложения здесь? Заранее спасибо.

Это довольно легко. Все, что вам нужно сделать, это предоставить cURL обратный вызов для обработки данных по мере их поступления.

function onResponseBodyData($ch, $data) { echo $data; return strlen($data); } curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'onResponseBodyData'); 

Очень важно вернуть длину данных из вашего обратного вызова. Это означает, сколько данных вы обработали. Если вы возвращаете нечто иное, чем длина данных, переданных (например, 0 ), запрос прерывается.

Теперь убедитесь, что у вас нет буферизации вывода, и настройте сервер, чтобы не буферизовать весь ответ перед отправкой. Он будет работать из коробки в большинстве конфигураций.

Здесь вы можете найти больше примеров: http://curl.haxx.se/libcurl/php/examples/callbacks.html