Intereting Posts
Хранение данных кредитной карты с помощью mcrypt или GnuPG SQL Query несколько AND и OR не работают Предупреждение: mysql_query (): 3 не является допустимым ресурсом MySQL-Link Выделите все элементы в таблице и отобразите их в порядке, в зависимости от их идентификатора родителя Сравнение разных строк в PHP с == возвращает true Вставка списка значений не соответствует списку столбцов: 1136 Число столбцов не соответствует количеству значений Какая настройка вызывает чувствительные к регистру require_once пути? Возможны ли динамические SQL-запросы в коде? Удаление последней запятой в PHP? Идентификаторы Pass для запроса pre_get_posts в функции Добавить проверку файла в phpmailer? минимизировать выбор запросов в той же таблице Mysql чтение RSS-ленты twitter rss с простым xml PHP лямбда-функции и область действия PHPMailer загружает некоторое время, а затем дает 500 – ошибка внутреннего сервера

PHP cURL: CURLOPT_CONNECTTIMEOUT vs CURLOPT_TIMEOUT

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; 

Единичные тесты для источника