Есть ли тайм-аут WGET?


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

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

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

4 66

4 ответа:

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


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

-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

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

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

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

-T seconds
--timeout=seconds

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

-t number
--tries=number

ссылки: wget man document

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

ignore_user_abort(TRUE);

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

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

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