Zgodnie ze stroną podręcznika wget , istnieje kilka opcji związanych z przekroczeniem limitu czasu - a domyślny limit czasu odczytu wynosi 900 sekund - więc mówię, że tak, może upłynąć limit czasu.
Oto opcje, o których mowa:
-T seconds
--timeout=seconds
Ustaw limit czasu sieci na sekundy sekundy. Jest to równoważne określeniu --dns-timeout
,
--connect-timeout
i
--read-timeout
, w tym samym czasie.
A dla tych trzech opcji:
--dns-timeout=seconds
Ustaw limit czasu wyszukiwania DNS na sekundy sekundy.
Wyszukiwania DNS, które nie zostaną zakończone w określonym czasie, zakończą się niepowodzeniem.
Domyślnie nie ma limitu czasu wyszukiwania DNS, innego niż ten zaimplementowany przez biblioteki systemowe.
--connect-timeout=seconds
Ustaw limit czasu połączenia na sekundy sekundy.
Połączenia TCP, których ustanowienie zajmie więcej czasu, zostaną przerwane.
Domyślnie nie ma limitu czasu połączenia, innego niż ten zaimplementowany przez biblioteki systemowe.
--read-timeout=seconds
Ustaw limit czasu odczytu (i zapisu) na sekundy sekundy.
„Czas” tego limitu czasu odnosi się do czasu bezczynności: jeśli w dowolnym momencie pobierania żadne dane nie zostaną odebrane przez więcej niż określoną liczbę sekund, odczyt kończy się niepowodzeniem i pobieranie jest wznawiane.
Ta opcja nie wpływa bezpośrednio na czas trwania całego pobierania.
Przypuszczam, że używając czegoś takiego
wget -O - -q -t 1 --timeout=600 http://www.example.com/cron/run
powinien upewnić się, że nie ma limitu czasu dłuższego niż czas trwania skryptu.
(Tak, to prawdopodobnie najbardziej brutalne rozwiązanie z możliwych ^^)
-t
Opcja wydaje się być aliasem--tries
, który Ustaw liczbę prób na liczbę. ;;; Wydaje się, że nie ma to związku z jakimkolwiek przekroczeniem limitu czasu, ale z tym, ile razy wget spróbuje ponownie pobrać, jeśli wystąpi błąd - i prawdopodobnie nie chcesz, aby limit czasu był traktowany jako błąd, a skrypt jest ponownie wywoływany.--timeout
. Prawdopodobnie dlatego, że używam podstawowego uwierzytelniania w poleceniuDomyślny limit czasu to 900 sekund. Możesz określić inny limit czasu.
Domyślnie ponowna próba to 20 razy. Możesz określić różne próby.
link: dokument wget man
źródło
Ponieważ w swoim pytaniu powiedziałeś, że to skrypt PHP, może najlepszym rozwiązaniem byłoby po prostu dodanie skryptu:
W ten sposób, nawet jeśli się
wget
zakończy, skrypt PHP jest przetwarzany przynajmniej do momentu, gdy nie przekroczymax_execution_time
limitu (dyrektywa ini: domyślnie 30 sekund).W każdym
wget
razie nie powinieneś zmieniać jego limitu czasu, zgodnie z instrukcją UNIX domyślny limit czasu wget wynosi 900 sekund (15 minut) , czyli jest znacznie większy niż potrzeba 5-6 minut.źródło
Przed wersją 1.14 argumenty limitu czasu wget nie były przestrzegane podczas pobierania przez https z powodu błędu .
źródło