Ustaw limit czasu dla odpowiedzi strony internetowej za pomocą curl

15

Używam narzędzia do monitorowania, czy strona jest uruchomiona.

Narzędzie używa curlpolecenia wewnętrznie do pobrania danych wyjściowych.

Jednak gdy odpowiedź strony internetowej trwa dłużej, pojawia się TIMEOUTbłąd. Nie ma możliwości, aby zwiększyć limit czasu z narzędzia.

Czy jest jakiś sposób, aby ustawić / zmodyfikować limit czasu odpowiedzi ze strony internetowej?

Czy jest jakaś zmienna, którą można zmodyfikować?

użytkownik80040
źródło

Odpowiedzi:

23

Możesz użyć -mopcji:

-m, --max-time <seconds>
              Maximum time in seconds that you allow the  whole  operation  to
              take.   This is useful for preventing your batch jobs from hang‐
              ing for hours due to slow networks or  links  going  down.   See
              also the --connect-timeout option.

              If this option is used several times, the last one will be used.

Obejmuje to czas połączenia, jeśli chcesz określić go osobno, użyj --connect-timeoutopcji.

Cuonglm
źródło
4

Zwykle robisz to z opcją w wierszu poleceń, gdy curlzostanie wywołany. Ale ponieważ nie możesz tego zmienić, istnieje inny sposób - możesz utworzyć plik konfiguracyjny dla curl. W curlsystemie uniksowym najpierw zajrzy do katalogu domowego użytkownika, który uruchamia curl, w poszukiwaniu pliku o nazwie .curlrc. Utwórz ten plik za pomocą linii

connect-timeout = 10

aby skrócić czas oczekiwania do 10 sekund. Lub możesz ustawić maksymalny czas dla całej operacji, z opcją max-time:

max-time = 10
Jenny D.
źródło
To świetny pomysł ... ale zastanawiałem się również, czy istnieje dla tego jakaś szczególna zmienna env lub coś, co można ustawić z backendu, np. Ulimit, aby zwiększyć liczbę FD?
user80040,
Nie mogę znaleźć czegoś takiego na stronie podręcznika.
Jenny D.
4

curl ma opcję „limit czasu połączenia”:

--connect-timeout <seconds>

Jeśli twoje „narzędzie” jest skryptem, możesz ręcznie je tam edytować. Ale /unix//a/148926/77959 jest jeszcze lepszy - edytuj konfigurację curl!

flowtron
źródło
Tak ... dodanie konfiguracji jest raczej świetnym pomysłem ... ale zastanawiałem się również, czy istnieje dla tego jakaś szczególna zmienna env lub coś, co można ustawić z backendu, np. Ulimit, aby zwiększyć liczbę FD?
user80040,
@ user80040 Nie, nie ma. Nie ma „zaplecza”, limit czasu nie jest jakimś ograniczeniem systemu. Curl wykonuje żądanie sieciowe i decyduje o przekroczeniu limitu czasu na podstawie jego konfiguracji.
Gilles 'SO - przestań być zły'
0

Od Curlmożesz użyć tej opcji --connect-timeout: Maksymalny czas w sekundach, przez który połączenie z serwerem może trwać. Ogranicza to tylko fazę połączenia, po curlpodłączeniu ta opcja nie ma już zastosowania. Zobacz także --max-timeopcję.

Thushi
źródło