PHP имеет эти два параметра, связанные с таймаутом: CURLOPT_CONNECTTIMEOUT
и CURLOPT_TIMEOUT
.
Описания на сайте PHP немного расплывчаты. Какая разница?
Чтобы использовать пример реального мира: скажите, что вы отправляете GET vars на URL через cURL и хотите получить обратно XML, будет ли CURLOPT_CONNECTTIMEOUT
относиться к максимальному количеству времени, которое может потребоваться для подключения к серверу, и CURLOPT_TIMEOUT
максимальной суммы времени, которое может потребоваться, чтобы отправить XML обратно?
CURLOPT_CONNECTTIMEOUT – это максимальный промежуток времени в секундах, который разрешен для подключения к серверу. Он может быть установлен на 0, чтобы отключить этот предел, но это нецелесообразно в производственной среде.
CURLOPT_TIMEOUT – это максимальное время в секундах, в течение которого выполнение отдельных вызовов функции расширения cURL будет ограничено. Обратите внимание, что значение для этого параметра должно включать значение для CURLOPT_CONNECTTIMEOUT.
Другими словами, CURLOPT_CONNECTTIMEOUT является сегментом времени, представленным CURLOPT_TIMEOUT, поэтому значение CURLOPT_TIMEOUT должно быть больше значения CURLOPT_CONNECTTIMEOUT.
От разницы между CURLOPT_CONNECTTIMEOUT и CURLOPT_TIMEOUT
CURLOPT_CONNECTTIMEOUT не является сегментом времени, представленным CURLOPT_TIMEOUT
Если для CURLOPT_CONNECTTIMEOUT установлено значение 3 секунды, а CURLOPT_TIMEOUT – 4 секунды, выполнение может занять до 7 секунд.
Я тестировал это, моделируя медленное подключение к серверу (падение iptables).
В дополнение к принятому ответу .
В соответствии с исходным кодом настройки связаны: если оба установлены, используется самый ограничительный. Но только в стадии соединения.
/* if a timeout is set, use the most restrictive one */ if(data->set.timeout > 0) timeout_set |= 1; if(duringconnect && (data->set.connecttimeout > 0)) timeout_set |= 2; switch(timeout_set) { //... case 3: if(data->set.timeout < data->set.connecttimeout) timeout_ms = data->set.timeout; else timeout_ms = data->set.connecttimeout; break;
Единичные тесты для источника