Martina H.: wget timeout, ich werd verrückt

Guten Abend liebe Gemeinde.

Ich habe in meiner Wohnung einen kleinen Server stehen, dessen Status-Seite von einem Cronjob PHP-Script regelmäßig abgebfragt wird. Dazu benutze ich wget:

$server_page=wget -O - --user=user --password=pw -- "http://blablu.dyndns.org/params.cgi";

Jetzt habe ich seit Tagen das Problem, dass ich den Fehlerfall (Server nicht erreichbar da dnynds nicht aktualisiert) nicht anständig loggen kann. Ich bekomme es einfach nicht hin, dem wget einen anständigen timeout zu befehlen. Egal was ich mache, wget versucht ewig den Server anzuwählen, bis dann meine meine mySQL-Verbindung weg ist usw...
Ich habe schon alles versucht:

$server_page=wget  --timeout 10 --dns-timeout 10 --connect-timeout 10 --read-timeout 10 -O - --user=user --password=pw -- "http://blablu.dyndns.org/params.cgi";

oder

$server_page=wget  --timeout=10 --dns-timeout=10 --connect-timeout=10 --read-timeout=10 -O - --user=user --password=pw -- "http://blablu.dyndns.org/params.cgi";

oder auch nur einige von den Paramtern. Ich weiß da jetzt nicht mehr weiter.

Tausend Dank für die Hilfe.
LG Martina

  1. Hallo,

    oder auch nur einige von den Paramtern. Ich weiß da jetzt nicht mehr weiter.

    was passiert denn? Oder was passiert nicht? Welches wget hast du installiert? Was passiert, wenn du den Befehl von Hand ausführst?

    Grüße

    1. was passiert denn? Oder was passiert nicht? Welches wget hast du installiert? Was passiert, wenn du den Befehl von Hand ausführst?

      welches wget bei hosteurope installiert ist weiß ich nicht. Was passiert? Es weget versucht es einfach zu lange, aber es soll nach 5 oder 10 Sekunden eben abbrechen.

      Gruß Martina

      1. Hallo,

        welches wget bei hosteurope installiert ist weiß ich nicht.

        Na dann versuch doch mal:
        echo system("wget --version");

        Was passiert? Es weget versucht es einfach zu lange, aber es soll nach 5 oder 10 Sekunden eben abbrechen.

        --timeout=10 sollte den generellen Timeout auf 10 Sekunden setzen. Schon mit "-d" versucht?

        Grüße

        1. Moin!

          echo system("wget --version");

          Ich würde es ja eher mit "less /etc/wgetrc" und "less ~/.wgetrc" versuchen herauszufinden, wie wget konfiguriert ist. Das Verhalten hat nämlich mit der Verion nicht viel zu tun, eher schon mit der Konfiguration, welche der Distributor mitgibt und (oder) der Hoster verwendet.

          MFFG (Mit freundlich- friedfertigem Grinsen)

          fastix

  2. Hallo,

    $server_page=wget -O - --user=user --password=pw -- "http://blablu.dyndns.org/params.cgi";

    Ich bekomme es einfach nicht hin, dem wget einen anständigen timeout zu befehlen. Egal was ich mache, wget versucht ewig den Server anzuwählen, bis dann meine meine mySQL-Verbindung weg ist usw...

    $server_page=wget  --timeout 10 --dns-timeout 10 --connect-timeout 10 --read-timeout 10 -O - --user=user --password=pw -- "http://blablu.dyndns.org/params.cgi";

    syntaktisch falsch. Wenn Du die langen Versionen verwendest musst Du unbedingt das Gleichheitszeichen verwenden:

    $server_page=wget  --timeout=10 --dns-timeout=10 --connect-timeout=10 --read-timeout=10 -O - --user=user --password=pw -- "http://blablu.dyndns.org/params.cgi";

    --timeout=10 schließt --dns-timeout --connect-timeout und --read-timeout mit ein und ist äquivalent zu

    -T 10   # ja, in der Kurzschreibweise mit Leerzeichen

    Was ich hingegen vermisse, ist die Reduzierung der Anzahl der Versuche, die wget unternimmt, ein einziger Versuch sollte genügen. Standard sind 20

    -t 1    # oder halt --tries=1 in der Langform

    somit kämst Du auf

    wget -T 10 -t 1 -O - --user= ...

    Freundliche Grüße

    Vinzenz

    1. Hallo!

      wget -T 10 -t 1 -O - --user= ...

      Danke, Danke. Echt super. Bei 20 Versuchen konnte ich immer lange warten...

      Schönen Abend noch.
      Martina

      1. Moin!

        Danke, Danke. Echt super. Bei 20 Versuchen konnte ich immer lange warten...

        Noch etwas:

        Mit

        $err=wget ..... 1> /dev/null 2> /dev/null; echo echo $?;;

        bekommst Du im Erfolgsfall eine Null nach $err oder mindestens eine Eins im Fehlerfall.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix