我想用这个例子:
https://stackoverflow.com/a/5830599
几乎是出于此页面上提到的原因。
我正在尝试提供更大的文件(通常为 100-200 兆),并且需要以块的形式“输出”数据,而不是使用 curl_exec() 将其全部读取到内存中。我的网络主机提供商只允许我使用 64 兆的内存,所以我无法一次读取那么多信息。
这里有什么建议吗?提前致谢。
我想用这个例子:
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