Я получаю эту ошибку во время извлечения данных из Instagram (в основном ~ 8000 изображений и комментариев были получены правильно, и внезапно я получаю следующую ошибку):
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 или нет. Если это так, дайте мне знать, как это исправить.
Поэтому я понял, что, когда я просматриваю эту учетную запись Instagram вручную, не все загружается в любом случае, и его загрузка занимает много времени. Я использовал их, и теперь, по крайней мере, я получаю 70 из 130 фишек:
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;
}
}
Возможно, не лучшее решение, но оно служит моим потребностям. Пожалуйста, не стесняйтесь добавлять свои ответы.
Других решений пока нет …