Время ожидания WGET? - PullRequest
       6

Время ожидания WGET?

70 голосов
/ 18 февраля 2010

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

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

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

Ответы [ 4 ]

128 голосов
/ 18 февраля 2010

Согласно справочной странице 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

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

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

28 голосов
/ 18 февраля 2010

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

-T seconds
--timeout=seconds

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

-t number
--tries=number

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

6 голосов
/ 19 декабря 2012

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

ignore_user_abort(TRUE);

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

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

5 голосов
/ 14 августа 2014

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

...