почему тайм-аут curl, когда получить из URL? - PullRequest
0 голосов
/ 28 апреля 2018

почему cURL в PHP возвращает сообщение о превышении времени ожидания при получении HTML с веб-страницы?

Вот код PHP.

function getFromUrl( $url )
{
  $curl = curl_init($url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  $result = curl_exec($curl);

  if (curl_errno($curl))
  {
    echo 'Error:' . curl_error($curl) . '<br>' ;
  }

  curl_close($curl);

  return $result ;
}

Я получаю ожидаемые результаты, когда запускаю функцию с www.google.com в качестве URL.

  $url = 'http://www.google.com' ;
  $result = getFromUrl($url) ;

Но, когда я передаю URL-адрес веб-страницы на 2-м веб-сервере, я получаю ответ об истечении времени ожидания. URL существует, когда я вставляю его в браузер. Почему тайм-аут сообщения?

$url = "http://xxx.54.20.170:10080/accounting/tester/hello.html" ;
echo $url . '<br>' ;
$rv = getFromUrl( $url ) ;
echo  $rv . '<br>' ;

вот сообщение об ошибке cURL:

Ошибка: не удалось подключиться к порту 10080 xxx.54.20.170: время ожидания истекло

Я ищу передачу данных с одного веб-сервера на другой.

спасибо,

1 Ответ

0 голосов
/ 28 апреля 2018

для PHP,

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); 
curl_setopt($ch, CURLOPT_TIMEOUT, 400); //timeout in seconds

Из терминала сначала проверьте, работает ли curl, используя следующие дополнительные опции.

- подключение тайм-аута Максимальное время в секундах, которое вы разрешаете подключению к сервер взять. Это только ограничивает фазу подключения, один раз curl подключил эту опцию больше не используется. С 7.32.0 г. эта опция принимает десятичные значения, но фактическое время ожидания снижение точности при увеличении указанного таймаута малая точность. Смотрите также параметр -m, --max-time.

If this option is used several times, the last one will be used.

и

-m, --max-time Максимальное время в секундах, которое вы позволяете всей операции брать. Это полезно для предотвращения зависания ваших пакетных заданий. в течение нескольких часов из-за медленных сетей или обрывов связи. поскольку 7.32.0, эта опция принимает десятичные значения, но фактическое время точность уменьшается с увеличением указанного таймаута в десятичной точности. См. Также параметр --connect-timeout.

If this option is used several times, the last one will be used.

Попробуйте использовать их, чтобы увеличить время ожидания.

Есть много причин, по которым curl не работает. Некоторые из них могут быть, 1) Время отклика медленное. 2) Мало сайта имеет проверку на несколько параметров заголовка, чтобы ответить на запрос. Эти параметры включают User-Agent, Referer и т. Д., Чтобы убедиться, что он поступает из действительного источника, а не через ботов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...