Подтвердить что ты не робот

PHP: значение тайм-аута по умолчанию cURL

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

4b9b3361

Ответ 1

По умолчанию используются следующие значения:

  • 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

Ответ 2

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

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 для резервного копирования этой заявки, и мне не удалось вызвать тайм-аут cURL, загрузив очень большой файл с настройкой default_socket_timeout в течение 1 секунды.

Ответ 4

Может быть проще указать это значение непосредственно в script?

curl_setopt($curl_handler, CURLOPT_TIMEOUT, 30); // 30 seconds