Ankündigung

Einklappen
Keine Ankündigung bisher.

Links mit Timeout auf vorhandensein überprüfen

Einklappen

Neue Werbung 2019

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

  • Links mit Timeout auf vorhandensein überprüfen

    Hallo!

    Ich möchte überprüfen, ob Pages, die in einem Linkverzeichnis sind, noch vorhanden sind. Gibt es da eine Möglichkeit, das Ganze mit einem Timeout zu verknüpfen?

    Momentan löse ich das Problem so:

    $page = fopen($row['url'], 'rb');

    Leider klappt das nicht wirklich, da ich, wenn ich z. B. nur Domains aufrufe und keine konkreten Dateien angesprochen werden, immer ein "ok" zurückbekomme.

    Gibt es hier eine gute Möglichkeit?


  • #2
    fsockopen und konsorten. dabei gibt es zwei mögliche timeouts, eins für den server an sich und eines für die url.

    Kommentar


    • #3
      Welcher Port muss denn da genutzt werden, wenn man fsockopen benutzt?

      Kommentar


      • #4
        Der Port, über den auch auf die Datei zugreifst.

        Kommentar


        • #5
          der da wäre?

          Kommentar


          • #6
            http ist Port 80, btw.

            Kommentar


            • #7
              Da Passt aber irgend etwas nicht.

              Ich checke die Domains:

              http://www.rgdfgsdfgsdfgsdfgdfhzjhtz.../sdfgsdfg.html (nicht vorhanden)

              und

              http://www.ebay.de/ (vorhanden)

              Es kommt aber bei beiden als Rückgabewert der Funktion "FALSE", also errno eine "0" und als errstr "Success".

              Die Zeile lautet:

              $page = fsockopen ($row['url'], 80, $errno, $errstr, 10);

              Kommentar


              • #8
                Was steht in $row['url']?

                http://de2.php.net/fsockopen

                Kommentar


                • #9
                  Hallo!

                  Also scheint folgendes Problem zu bestehen:

                  Wenn die erhaltene errno 0 ist und die Funktion FALSE/falsch zurück gibt, ist dies ein Hinweis, dass der Fehler vor dem >connect()-Aufruf geschah. Das ist ein Problem, dass häufig mit der Initialisierung des Sockets zusammen hängt.
                  Nur was kann ich dagegen machen?

                  In $row['url'] steht

                  http://www.rgdfgsdfgsdfgsdfgdfhzjhtz.../sdfgsdfg.html

                  und

                  http://www.ebay.de/

                  Es handelt sich um eine Schleife, die zweimal durchlaufen wird und jeweils einen der genannten Inahlte hat.

                  Kommentar


                  • #10
                    Eben! Und das ist falsch!

                    Kommentar


                    • #11
                      zeig mal bitte wie du prüfst bzw. zeig den kompletten Teil des Script wo du überprüfst weil das kann eigentlich nicht sein wenn fsockopen keine Verbindung aufbauen kann ist das SocketHandle False
                      Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                      Kommentar


                      • #12
                        Wonach soll ich denn sonst suchen?

                        Ich möchte ja checken, ob die Domains vorhanden sind.

                        Eignet sich diese Funktion dafür evtl. doch nicht?

                        Die Stelle des Scripts, wo geprüft wird, sieht momentan so aus:

                        Code:
                        $page = fsockopen ($row['url'], 80, $errno, $errstr, 10);
                        if($page)
                        	$availibility = 'vorhanden';
                        else
                        	$availibility = 'nicht vorhanden';
                        fclose($page);

                        Kommentar


                        • #13
                          Was meinst Du sollte dieser Link:
                          Zitat von karl-150
                          Schau Dir die Beschreibung der Funktion - verdammt noch mal - an!

                          Dazu solltest Du, als Fortgeschrittener, wohl in der Lage sein!? Oder täusche ich mich?

                          Kommentar


                          • #14
                            Hallo!

                            Hab ich ja...

                            Mittlerweile hab ich aber rausgefunden, dass es am "http://" am Anfang lag. Aber woran hätte ich das bei php.net sehen können?

                            Kommentar


                            • #15
                              Was karl-150 sagen möchte trenne einfach mal Addresse vom HTTP zb. mit RegEx

                              ps: an den Beispielen kann man das sehen
                              Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                              Kommentar

                              Lädt...
                              X