【问题标题】:Using CURL/PHP to download from FTP in chunks to save memory使用 CURL/PHP 从 FTP 分块下载以节省内存
【发布时间】:2013-01-29 04:47:59
【问题描述】:

我想用这个例子:

https://stackoverflow.com/a/5830599

差不多就是因为这个页面上提到的原因。

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

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

【问题讨论】:

    标签: php curl download


    【解决方案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

    【讨论】:

    • 这似乎可以解决问题。非常感谢。我只需要多玩一点,然后将其投入生产。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    相关资源
    最近更新 更多