Deadlinks per PHP überprüfen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by Scherzo; 07-07-2006, 13:44.

  • #2
    cURL
    oder
    fsockopen
    Slava
    bituniverse.com

    Comment


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

      Danke,

      Robert

      Comment


      • #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...

        Comment


        • #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

          Comment


          • #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.
            Last edited by Scherzo; 07-07-2006, 20:26.

            Comment

            Working...
            X