cUrl ожидает загрузки URL, если результаты печати - PullRequest
0 голосов
/ 25 сентября 2018

Следующий 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...