【问题标题】:Instagram-API ::: cURL error 18: transfer closed with 3789 bytes remaining to readInstagram-API ::: cURL 错误 18:传输已关闭,剩余 3789 字节可读取
【发布时间】:2017-03-14 01:06:30
【问题描述】:

我在从 instagram 进行数据挖掘的过程中收到此错误(基本上大约 8000 张图像和 cmets 被正确检索,突然我收到以下错误):

 cURL error 18: transfer closed with 3789 bytes remaining to read (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

我在代码中使用 curl 的唯一部分是:

function url_exists($url) {
    if (!$fp = curl_init($url)) return false;
    return true;
}

这里使用的是url:

        $feed_img_url = $feed[$idx]->getImageVersions2()->candidates[0]->getUrl()."\n";
        if (url_exists($feed_img_url)==true) {
            $img = "results/".$feed_id_str."/".$feed_id_str.".jpeg";
            file_put_contents($img, file_get_contents($feed_img_url));
        }

它没有告诉哪一行产生了错误,但我猜这个异常来自上述之一,因为我没有在其他任何地方使用过该 url。这部分$feed[$idx]->getImageVersions2()->candidates[0]->getUrl()."\n";来自Instagram PHP API,如https://github.com/mgp25/Instagram-API

请提出解决此问题的建议。

更多信息:当从https://www.instagram.com/gegengrader/ 检索数据时会发生这种情况,虽然它没有很多帖子,但帖子有很多喜欢,并且只有 29 个帖子(图像)被检索到。也就是说,我不确定这是否是 API 速率限制问题。如果是,请告诉我如何修复它。

【问题讨论】:

  • 这里涉及的 PHP 太多了,我无法完全确定,但 curl 错误代码 18 通常意味着在传输所有数据之前连接已断开。不是你造成的错误,是服务器/网络造成的。

标签: php curl instagram instagram-api rate-limiting


【解决方案1】:

所以我意识到,当我手动浏览这个 Instagram 帐户时,并非所有内容都可以加载,而且加载它需要很长时间。我使用了这些,现在至少我检索了 130 个提要中的 70 个:

function url_exists($url) {
    if (!$cURL = curl_init($url)) {
        return false;
    }

    curl_setopt($cURL, CURLOPT_HTTPHEADER, array('Expect:'));
    return true;
}

catch (Exception $e) {
    echo $e->getMessage();
    if (strpos($e->getMessage(), 'cURL error 18: transfer closed') !== false) {
        continue;
    }

}

可能不是最好的解决方案,但它可以满足我的需求。请随时添加您的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 2021-04-09
    • 2020-07-07
    相关资源
    最近更新 更多