Является ли время ожидания WGET?

Я запускаю PHP script через cron с помощью Wget со следующей командой:

wget -O - -q -t 1 http://www.example.com/cron/run

Для выполнения обработки script потребуется максимум 5-6 минут. Будет ли WGet ждать его и давать ему все это время, или он будет тайм-аут?

Ответ 1

В соответствии с справочной страницей wget существует несколько параметров, связанных с таймаутами - и есть тайм-аут чтения по умолчанию 900s - поэтому я говорю, что да, это может быть тайм-аут.


Вот варианты, о которых идет речь:

-T seconds
--timeout=seconds

Установите тайм-аут сети на секунды секунд. Это эквивалентно указав --dns-timeout, --connect-timeout и --read-timeout, все в одном время.


И для этих трех вариантов:

--dns-timeout=seconds

Установите тайм-аут поиска DNS в секундах секунд.
DNS-запросы, которые не завершение в течение указанного времени не удастся.
По умолчанию, нет тайм-аут при поиске DNS, кроме которые реализуются системными библиотеками.

--connect-timeout=seconds

Установите время ожидания подключения в секундах секунд. TCP-соединения, которые принимают дольше будет отменено.
По умолчанию нет подключения таймаут, кроме реализованного системными библиотеками.

--read-timeout=seconds

Установите тайм-аут чтения (и записи) на секунд.
"Время" этот тайм-аут относится к простому: если, в любой момент загрузки нет данных получена больше, чем указанное количество секунд, чтение завершается сбой, и загрузка перезапускается.
Этот параметр не напрямую влияют на продолжительность всего скачать.


Я предполагаю использовать что-то вроде

wget -O - -q -t 1 --timeout=600 http://www.example.com/cron/run

должен быть уверен, что нет таймаута дольше, чем продолжительность вашего script.

(Да, возможно, самое жестокое решение возможно ^^)

Ответ 2

Время ожидания по умолчанию - 900 секунд. Вы можете указать другой тайм-аут.

-T seconds
--timeout=seconds

По умолчанию используется повторная попытка 20 раз. Вы можете указать разные попытки.

-t number
--tries=number

ссылка: документ wget man

Ответ 3

Поскольку в вашем вопросе вы сказали это PHP script, возможно, лучшим решением может быть просто добавить в свой script:

ignore_user_abort(TRUE);

Таким образом, даже если wget завершается, PHP скрипт продолжает обрабатываться, по крайней мере, до тех пор, пока он не превысит предел max_execution_time (директива ini: по умолчанию 30 секунд).

Как и в случае с wget, вы не должны изменять свой тайм-аут, в соответствии с руководством UNIX время ожидания wget по умолчанию - 900 секунд (15 минут), который намного больше, чем 5-6 минут, которые вам нужны.

Ответ 4

До версии 1.14 аргументы тайм-аута wget не соблюдались при загрузке через https из-за bug.