Следующий curl
-вызов срабатывает каждый раз, если и только если $data
напечатан после curl
-вызова.curl_getinfo()
возврат
[content_type] => text/html; charset=UTF-8
Если $data
не напечатано, curl
-вызов иногда возвращает тот же результат, что и выше, и иногда возвращает $data
, что означает «Загрузка ...», что означает, что страница еще не загружена.И curl_getinfo()
возвращает
[content_type] => text/html
Кроме того, при использовании print_r($data)
я вижу, что print_r(curl_getinfo($ch));
на моем веб-сайте обновляется несколько раз при выполнении вызова curl
,Что ... F?
(список set_opt
увеличился, когда я пытаюсь найти решение LOL) Ох ... да, даже если я напечатаю $data
после того, как оно было возвращено функции-вызывающей стороне и перехвачено в другой переменной .. curl
каждый раз завершается успешно.
Это нормальное поведение?Я не хочу print_r($data)
!
Возможно ли, что получаемый URL содержит javascript, который запускается, когда я "печатаю" его на своем веб-сайте?Почему иногда работает без print_r($data)
?Ссылка: есть-то-как-то-то-то-да-да-пока-скручивать-ждать-пока-страницы-динамические-обновления-все-готово
править: До дальнейшего уведомления япоместил curl
-call в цикл while, проверяя, превышает ли размер загружаемого файла определенный порог.Я установил цикл while на 10 итераций, и пока этого достаточно, т.е. он сможет загружать интересующий контент.Затраченное время едва замечено.
function curl_get_contents($url) {
global $dbg;
$ch = curl_init();
$timeout = 30;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
//curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17');
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch,CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
$data = curl_exec($ch);
if ($dbg) {
print_r(curl_getinfo($ch)); // This one gets refreshed if print_r($data) used below
if(curl_errno($ch)){
echo 'Curl error: ' . curl_error($ch);
} else {
echo "ALL GOOD <br>";
}
}
curl_close($ch);
//echo $data; // If I do this...
//print_r($data); // ... or this. curl is success 100%.
return $data;
}