Есть ли тайм-аут WGET?
Я запускаю PHP скрипт через cron с помощью Wget, со следующей командой:
wget -O - -q -t 1 http://www.example.com/cron/run
скрипт займет максимум 5-6 минут, чтобы сделать его обработку. Будет ли WGet ждать его и давать ему все необходимое время, или это будет тайм-аут?
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 из-за ошибка.