我想使用这个例子:
https://stackoverflow.com/a/5830599
几乎是因为本页提到的原因。
我正在尝试提供更大的文件(一般为100-200megs)并且需要以块的形式“输出”数据,而不是使用curl_exec()在内存中读取所有数据。我的网络托管服务提供商只允许64兆内存,所以我不能一次阅读那么多信息。
这里有什么建议吗?提前谢谢。
答案 0 :(得分:1)
这很简单。您需要做的就是为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