PHP: Значение таймаута завитка по умолчанию


Каково значение тайм-аута PHP cURL по умолчанию? Могу ли я получить значение из кода?

 49
Author: Tot Zam, 2012-04-25

3 answers

Значения по умолчанию следующие:

  • CURLOPT_FTP_RESPONSE_TIMEOUT: Неопределенный
  • CURLOPT_TIMEOUT: Неопределенный
  • CURLOPT_TIMEOUT_MS: Неопределенный
  • CURLOPT_CONNECTTIMEOUT: 300 секунд
  • CURLOPT_CONNECTTIMEOUT_MS: Неопределенный
  • CURLOPT_ACCEPTTIMEOUT_MS: 60 секунд

Предыдущий ответ (для справки):

Насколько я понимаю, CURL подчиняется параметру default_socket_timeout, если он не переопределен с помощью CURLOPT_TIMEOUT/CURLOPT_CONNECTTIMEOUT.

$socket_timeout = ini_get('default_socket_timeout'); // timeout in seconds
 27
Author: dtbarne, 2016-05-25 22:48:28

Это зависит от того, о какой настройке тайм-аута вы говорите.

CURL предлагает различные параметры, зависящие от настроек времени ожидания соединения. Некоторые из этих опций имеют установленный лимит, в то время как другие позволяют переводам занимать неопределенное количество времени. Чтобы понять, какие значения имеют настройки по умолчанию, а какие нет, вам нужно взглянуть на функцию libcurl curl_easy_setopt(): http://curl.haxx.se/libcurl/c/curl_easy_setopt.html

В Libcurl перечислены следующие соединения конкретные настройки тайм-аута:

  • CURLOPT_FTP_RESPONSE_TIMEOUT: По умолчанию нет (неопределенно)
  • CURLOPT_TIMEOUT: По умолчанию нет (неопределенно)
  • CURLOPT_TIMEOUT_MS: По умолчанию нет (неопределенно)
  • CURLOPT_CONNECTTIMEOUT: По умолчанию 300 секунд
  • CURLOPT_CONNECTTIMEOUT_MS: По умолчанию нет
  • CURLOPT_ACCEPTTIMEOUT_MS: По умолчанию 60000 мс

Исходный код PHP не переопределяет ни одну из вышеперечисленных настроек по умолчанию: https://github.com/php/php-src/blob/master/ext/curl/interface.c . Единственным несколько связанным параметром, переопределяемым привязками PHP, является CURLOPT_DNS_CACHE_TIMEOUT, изменяющий значение по умолчанию с 60 секунд до 120 секунд: https://github.com/php/php-src/blob/a0e3ca1c986681d0136ce4550359ecee2826a80c/ext/curl/interface.c#L1926

В одном из других ответов говорилось, что PHP установит CURLOPT_TIMEOUT значение, указанное в параметре default_socket_timeout ini. Я не смог ничего найти в исходном коде PHP код для резервного копирования этого утверждения, и я не смог вызвать тайм-аут завитка, загрузив очень большой файл с настройкой default_socket_timeout в 1 секунду.

 79
Author: Michael Dowling, 2013-06-28 19:47:39
 9
Author: tosin, 2012-04-25 05:14:31