2

我想用这个例子:

https://stackoverflow.com/a/5830599

几乎是出于此页面上提到的原因。

我正在尝试提供更大的文件(通常为 100-200 兆),并且需要以块的形式“输出”数据,而不是使用 curl_exec() 将其全部读取到内存中。我的网络主机提供商只允许我使用 64 兆的内存,所以我无法一次读取那么多信息。

这里有什么建议吗?提前致谢。

4

1 回答 1

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

于 2013-01-29T04:52:19.000 回答