За последние 24 часа нас посетили 22173 программиста и 1154 робота. Сейчас ищут 320 программистов ...

CURL ничего не возвращает.

Тема в разделе "PHP для новичков", создана пользователем FNW, 20 июн 2016.

Метки:
  1. FNW

    FNW Новичок

    С нами с:
    20 июн 2016
    Сообщения:
    3
    Симпатии:
    0
    Добрый день.
    Мне нужно получить данные по этому адресу: http://rtk.geospider.ru:8000/
    Пытаюсь получить через curl но ничего не выходит.
    Вот код:
    PHP:
    1.         $url = "rtk.geospider.ru:8000";
    2.         $defaults = array(
    3.             CURLOPT_HEADER          => 0,
    4.             CURLOPT_URL             => $url,
    5.             CURLOPT_FRESH_CONNECT   => 1,
    6.             CURLOPT_RETURNTRANSFER  => 1,
    7.             CURLOPT_FORBID_REUSE    => 1,
    8.             CURLOPT_TIMEOUT         => 4,
    9.             CURLOPT_PORT            => 8000
    10.         );
    11.         $ch = curl_init();
    12.         curl_setopt_array($ch, ($defaults));
    13.         if( ! $result = curl_exec($ch))
    14.         {
    15.             $result = curl_error($ch);
    16.         }
    17.         curl_close($ch);
    18.         var_dump($result);
    в результате получаю сообщение
    string(65) "Operation timed out after 4000 milliseconds with 0 bytes received"
    Подскажите пожалуйста что я делаю не так?
     
  2. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    я не знаю точно, может проблема в порте, ты его 2 раза указываешь, в адресе и в CURLOPT_PORT.
     
  3. FNW

    FNW Новичок

    С нами с:
    20 июн 2016
    Сообщения:
    3
    Симпатии:
    0
    пробовал по всякому. результат тот же.
     
  4. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    ну что я еще могу предположить это то, что надо отправлять какие то заголовки, хотя конечно это вряд ли.
    если что вот тут описано как отправлять заголовки - https://toster.ru/q/96569
     
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    ну вот и чего ты отказываешься от такой светлой мысли? Я в таких ситуациях делаю в браузере запрос и через инструменты разработчика смотрю все заголовки, которыми браузер обменялся с сервером. Потом в курле выставляю такие же заголовки и жду положительного результата. Часто этого бывает достаточно.

    Я бы обратил внимание автора, что он дважды выполняет запрос. Для зачем?

    PHP:
    1. <?php
    2. $host = 'rtk.geospider.ru';
    3. $ch = curl_init($host);
    4.  
    5. curl_setopt($ch, CURLOPT_URL, $host . '/');
    6. curl_setopt($ch, CURLOPT_PORT, 8000);
    7.  
    8. curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/ru_php_forum_58926.cookiefile");
    9. curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/ru_php_forum_58926.cookiefile");
    10. curl_setopt($ch, CURLOPT_ENCODING, 1);
    11. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    12. curl_setopt($ch, CURLOPT_PROXY, false);
    13. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36');
    14. curl_setopt($ch, CURLOPT_POST, false);
    15. curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    16.     'Connection: keep-alive',
    17.     'Cache-Control: max-age=0',
    18.     'Upgrade-Insecure-Requests: 1',
    19.     'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36',
    20.     'Referer: https://php.ru/forum/threads/curl-nichego-ne-vozvraschaet.58926/',
    21.     'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    22.     'Accept-Encoding: gzip, deflate, sdch',
    23.     'Accept-Language: ru,en-US;q=0.8,en;q=0.6',
    24. ));
    25.  
    26. $result = curl_exec($ch);
    27.  
    28. if(! $result)
    29. {
    30.     var_dump(curl_error($ch));
    31.     exit(1);
    32. }
    33. echo $result;
     
    mahmuzar нравится это.
  6. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Я недавно тоже маялся с такой проблемой и додумался так же скопировать оттуда заголовки))
    --- Добавлено ---
    В общем, отличный совет!
     
  7. FNW

    FNW Новичок

    С нами с:
    20 июн 2016
    Сообщения:
    3
    Симпатии:
    0
    Спасибо!
     
  8. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    ну я отталкивался от того, что если бы что-то не так было с заголовками то не было бы timeout, а тут же получал что-то типа "гуляй вася".
     
  9. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    @VLK ну почему же? Например, livejournal работает через сеть проксей. Платные аккаунты получают контент через "быстрые" маршруты, а халявщики - ждуть. Раньше в платных аккаунтах в исходник страницы даже врисовывался комментарий типа "вы получили эту страницу раньше чем 326 человек". К чему я это. Если пользователь - хороший браузер, то можно ему контент отдать сразу. А если бот - с задержкой. Не факт, что тот ресурс по такой схеме работает, но пример я удачный привел)))) Можно конечно поиграться с таймаутом и проверить через сколько придет ответ, если придет. Но по мне так уж лучше более дружелюбно обмениваться заголовками.
     
    VLK, mahmuzar и denis01 нравится это.