Deadlinks per PHP überprüfen

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

  • Deadlinks per PHP überprüfen

    Hi zusammen!

    Ich habe eine MySQL Datenbank mit etlichen Links für ein Linkverzeichnis. Nun möchte ich die Links gerne per Knopfdruck alle nacheinander auf Deadlinks überprüfen. Allerdings ist mir keine Methode bekannt, wie man mit PHP einen Link auf seine Erreichbarkeit überprüft. Im Forum gab es auch noch keine Beiträge zu diesem Thema. Weiß jemand einen Rat? Muss man da irgendwas mit der Reaktionszeit machen?

    Würde mich über einen Tipp sehr freuen!

    Grüße,

    Robert
    Zuletzt geändert von Scherzo; 07.07.2006, 14:44.

  • #2
    cURL
    oder
    fsockopen
    Slava
    bituniverse.com

    Kommentar


    • #3
      Ah, Super! Das hilft schon weiter!

      Danke,

      Robert

      Kommentar


      • #4
        http://de.php.net/manual/de/function.get-headers.php

        get_headers() nutzen und schaub ob der Server ein 200 zurückliefert.

        Mit fsockopen muss man das ja alles selbst machen

        PS: Nur in PHP5...

        Kommentar


        • #5
          Hi prego!

          klasse - ich glaube die get_headers Method ist um einiges einfacher. Ich hatte mich schon mit fsockopen beschäftigt, musste aber schnell feststellen, dass das eher was für Experten ist.

          Gruß, Robert

          Kommentar


          • #6
            Hallo nochmal,

            wollte nur noch den Code posten, der nun dabei rausgekommen ist - falls jemand so eine Funktion mal braucht. Im Wesentlichen ist es der Quelltext, der in den Useranmerkungen unter http://de.php.net/manual/de/function.get-headers.php zu finden ist. Ich hab nur ein paar einfache Codezeilen ergänzt, damit es ein "Deadlinkchecker" wird. Das ganze ist übrigens PHP4-kompatibel.


            PHP-Code:
            <?php

            function my_get_headers($url) {

                   
            $url_info=parse_url($url);
                   if (isset(
            $url_info['scheme']) && $url_info['scheme'] == 'https') {
                       
            $port 443;
                       @
            $fp=fsockopen('ssl://'.$url_info['host'], $port$errno$errstr10);
                   } else {
                       
            $port = isset($url_info['port']) ? $url_info['port'] : 80;
                       @
            $fp=fsockopen($url_info['host'], $port$errno$errstr10);
                   }
                   if(
            $fp) {
                       
            stream_set_timeout($fp10);
                       
            $head "HEAD ".@$url_info['path']."?".@$url_info['query'];
                       
            $head .= " HTTP/1.0\r\nHost: ".@$url_info['host']."\r\n\r\n";
                       
            fputs($fp$head);
                       while(!
            feof($fp)) {
                           if(
            $header=trim(fgets($fp1024))) {
                                   
            $sc_pos strpos$header':' );
                                   if( 
            $sc_pos === false ) {
                                       
            $headers['status'] = $header;
                                   } else {
                                       
            $label substr$header0$sc_pos );
                                       
            $value substr$header$sc_pos+);
                                       
            $headers[strtolower($label)] = trim($value);
                                   }
                           }
                       }
                       return 
            $headers;
                   }
                   else {
                       return 
            false;
                   }
            }

            $checkurl 'http://www.michgibtsnicht.com/';

            $headers my_get_headers($checkurl);
                if(
            stristr($headers['status'], '20') == FALSE) {
                    echo 
            'Link überprüfen:&nbsp;';
                       echo 
            '<a href="' $CurrentLink->url '" target="_blank">' $CurrentLink->name '</a>&nbsp;';
                       echo 
            '(' $headers['status'] . ')<br/>';
                }

            ?>

            Gruß, Robert


            *EDIT: Script nochmal überarbeitet: HTTP-Status-Code wird mit ausgegeben. Funktioniert ganz gut.
            Zuletzt geändert von Scherzo; 07.07.2006, 21:26.

            Kommentar

            Lädt...
            X