Вы можете установить таймаут для подключения к серверу с помощью параметра командной строки --connect-timeout и таймаут для общего времени запроса с помощью параметра командной строки -m или --max-time. Время ожидания указывается в секундах. Это время, в течение которого запрос должен быть обработан или отменен. В этом примере таймаута Curl мы устанавливаем таймаут для отправки запросов.
Что такое тайм-аут?
Время ожидания называется таймаутом. Curl отправляет запросы через сетевое соединение. Первым шагом в получении ресурса с сервера является соединение с этим сервером. Установление соединения с удаленным сервером может занять некоторое время, в зависимости от скорости сети, задержки в сети и загрузки сервера. Curl имеет таймауты по умолчанию для соединения и общего времени запроса, но мы можем указать свои таймауты для каждой команды Curl.
Что такое --connect-timeout и как его использовать?
Параметр -connect-timeout ограничивает количество времени, в течение которого Curl будет пытаться подключиться к удаленному хосту. Значение таймаута соединения указывается в секундах. Если Curl не может установить соединение в течение указанного интервала, команда завершается неудачно.
Синтаксис команды Curl -connect-timeout
1 | curl --connection-timeout [SECONDS] [URL] |
Что такое -max-time и как его использовать?
Параметр -max-time (или -m) - это максимальное время в секундах, в течение которого вся операция должна быть завершена или отменена. Параметр -max-time может предотвратить зависание Curl при выполнении пакетных заданий в медленных сетях.
Синтаксис команды Curl -max-time
1 | curl --max-time [SECONDS] [URL] |
1 | curl -m [SECONDS] [URL] |
Примеры использования тайм-аут Curl
В следующем примере мы устанавливаем таймаут соединения для команды Curl при отправке запроса на адрес curlmyip.ru:
Пример таймаута соединения Curl
1 | curl --connection-timeout 5 https://curlmyip.ru |
Чтобы ограничить общее время выполнения команды Curl десятью секундами, мы можем использовать параметр --max-time:
Пример
1 | curl --max-time 10 https://curlmyip.ru |
Мы можем использовать оба таймаута в одной команде:
1 | curl --connection-timeout 5 --max-time 10 https://curlmyip.ru |
Что такое таймаут TCP?
TCP расшифровывается как Transmission Control Protocol (протокол управления передачей). Таймаут TCP keepalive определяет интервал, в течение которого TCP-соединение проверяет работоспособность канала Fiber Channel over IP (FCIP). Это обеспечивает быстрое обнаружение сбоя соединения, даже если оно неактивно. Curl включает поддержку TCP по умолчанию. TCP keepalive - это функция, которая заставляет стек TCP посылать зонд на другую сторону при отсутствии трафика, чтобы убедиться, что она все еще существует и жива. Используйте параметр --keepalive-time, чтобы указать, как часто вы хотите отправлять зонд партнеру в целых секундах. По умолчанию это 60 секунд. Иногда это зондирование мешает вам, и вы можете легко отключить его с помощью --no-keepalive.
Пример тайм-аута непрерывной работы Curl
1 | curl --keepalive-time 180 https://curlmyip.ru |
Пример отключения тайм-аута
1 | curl --no-keepalive https://curlmyip.ru |