timeout bei fsockopen klappt nicht...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • timeout bei fsockopen klappt nicht...

    PHP-Code:
    fsockopen($url["host"], $url["port"], $errno$errstr1); 
    Hallo, ich möchte eine URL auf Erreichbarkeit prüfen, das funktioniert auch alles, aber in dem Fall das die zu prüfende URL ein toter link ist, braucht das Script viel zu lange um das Ergebnis auszuwerfen...

    Wie kann ich den Timeout wählen, das sofort etwas passiert! Ich prüfe ca. 20 URL auf einer Seite (handelt sich um eine Linkliste...) und wenn nun z.B. 4 Links nicht erreichbar sind, dauert der Seitenaufbau fast eine Minute!

    Ich hab schon den Timeout Wert in fsockopen() auf 1 gesetzt, aber bringen tut es auch nicht viel...

    kann mir jemand weiterhelfen?

  • #2
    der timeout per fsockopen ist nur für den server gedacht. um einen timeout für eine bestimmte resource auf dem server zu setzen, mußt du ... dingens hier ... verwenden ... socket_set_timeout ...

    so steht es zumindest im FM.
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Ja, das hatte ich schon ausprobiert, aber da sich dabei nichts verändert hat, hab ich die Finger von gelassen...

      oder muss ich noch irgendeine zusatzbedingung hinzufügen oder sowas?

      PHP-Code:
      $fp = @fsockopen($url["host"], $url["port"], $errno$errstr1);
      socket_set_timeout($fp,1); 

      Kommentar


      • #4
        hallo,

        ich habe genau das gleiche Problem und wollte mal nachfragen ob es dafür neue erkenntnisse gibt...

        danke sagt der rossy

        Kommentar


        • #5
          @topicstarter
          Du meinst wohl eher wenn der Server ein toter Server ist. Wenn du nämlich mittels GET dokument.html eine Anfrage via den Socket schickst, dann sagt dir der Server sofort mit einem 404-er, dass die Seite nicht existiert
          Dein Prob ist wohl eher, dass der Server auf den Socketaufbau nicht reagiert.
          Wenn du folgendes schreibst
          PHP-Code:
          $fp fsockopen($url["host"], $url["port"], $errno$errstr1); 
          Prüfst du dann die Var $fp ? Nach dem Motto
          PHP-Code:
          if(!$fp){
              continue; 
          // nimm den nächsten Eintrag zum prüfen
          }else{
              
          //weiterfahren mit dem Prüfen ob die Datei exisitert

          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            hi,

            auch wenn sich deine antwort an den tread beginner richtet..

            in meinem fall(fällen) muss es sich wohl um Fehler 500 - Unknown oder 408 - Timeout handeln. aber wie gesagt leiert das script ehwig umher um das festzustellen und ich finde keine möglichkeit es abzubrechen...

            cu...

            Kommentar


            • #7
              @rossy
              Zu Fehler 408:
              The client did not produce a request within the time that the server was prepared to wait. The client MAY repeat the request without modifications at any later time.

              d.h. dass du nicht genug schnell bist

              Der 500-er ist ein interner Serverfehler und kommt meist wegen einer Fehlkonf zustande. imho kannst du den nicht mit einer falschen Anfrage provozieren.

              Aber warum weisst du denn nicht sicher welcher Fehler der Server meldet ? Wertest du die Serverantwort etwa nicht aus ?

              Gruss

              tobi

              p.s. Server-Status-Codes
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                ich erhalte ein leeres ergebnis wenn ich lange genug warte die 500 oder 408 hat mir das script von webmasterplan ausgespuckt. ist wahrscheinlich auch ne schätzung dererseits aber zumindestens bekommen die es hin das da script nach ein paar sekunden abbricht...

                wie ist das eigentlich hier? kann ich nen link posten oder ist das verboten

                cu.

                Kommentar


                • #9
                  kann ich nen link posten oder ist das verboten
                  Probiers doch, sollte gehen.

                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    das wäre eine seite um die es sich drehen würde

                    http://62.4.80.54/freak-pc/index.php

                    cu

                    Kommentar


                    • #11
                      Hast du FF ? Wenn nein dann lad ihn dir runter und suche nach der Erweiterung LiveHeaders. Damit kannst du die Server/Client Komm anschauen. Was meldet der Server denn ?

                      Gruss

                      tobi
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        mit FF meinst du vermutlich firefox oder??? hab ich zwar installiert benutze ich aber so gut wie nie aber egal...

                        wo soll ich da genau nach LiveHeaders suchen???

                        und wenn ich das gefunden haben sollte ist ja dann immer noch die eigentliche frage:

                        wie kann ich das script nun unterbrechen???

                        cu

                        Kommentar


                        • #13
                          wie kann ich das script nun unterbrechen???
                          Das hängt schwer von der Serverantwort ab. Wenn ein Fehlercode gemeldet wird kannst du die Verbindung schnell schliessen, aber du musst den Fehlercode kennen und abfangen.
                          FF === FireFox
                          Wo suchen ? Bei den Extensions von FF im Web...

                          Gruss

                          tobi
                          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                          Kommentar


                          • #14
                            Ev hilft dir dieser Code weiter. Habe mir selbst mal so ein Script gebastelt um URL's aus einer DB zu prüfen. Du musst den Code halt vllt etwas an deine Bedürfnisse anpassen (ev das ganze DB-Zeugs weglassen)
                            http://www.php-resource.de/forum/sho...5&pagenumber=2

                            Gruss

                            tobi
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #15
                              ok danke auf alle fälle.
                              ich schaus mir dann mal an.

                              zum post vorher:
                              das problem ist ja dass ich den status via fsockopen ermitteln will, man mich aber aus irgendeinem grund nicht lässt.

                              mit get_headers($url) geht es im übrigen auch nicht. da leiert das ding auch ehwig umher und bricht nach ner halben minute mit nem fehler ab. ich sitz jetzt den ganzen tag schon wegen dem mist hier rum. könnte kot...

                              whatever
                              nochmal danke für deine mühen...

                              cu rossy

                              Kommentar

                              Lädt...
                              X