Link-check

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

  • Link-check

    Hi Leute,
    wie kann man [(fast) egal mit welcher Sprache] checken ob links tot sind oder nicht... hab keine Ahnung... nich ma nen Ansatz...

  • #2
    rein theoretisch:
    - HTTP-request auf die Seite stellen
    - auf Antwort warten
    - Antwort auswerten

    Falls es niemand praktisch weiß, liest Du dich am besten mal hier schlau, wie das geht und wie die Antwort ausgewertet wird:
    http://www.w3.org/Protocols/rfc2616/rfc2616

    Vor allem Kapitel 5 und 6 dürften dich interessieren.
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      1. Problem: Hab leider keinen blassen schimmer wie ich das in meine HP einbaue... (ich glaub ich muss es erst ma verstehn). 2. Problem: Wenn ich so etwas mit PHP mache würde der Benutzer ja erst warten müssen bis eine Verbindung zu den Mirrors aufgebaut, bzw. ein timeout kommt, bis er die Seite runterläd - das wär natürlich tierisch nervig. Also müsste das per JS oder so gemacht werden und dann, zum Beispiel, 2 verschiedene Bilder ausgegeben werden. Danke an Titus!

      Kommentar


      • #4
        crontab:
        #alle 5 Minuten ausführen
        0-59/5 * * * * lynx -dump http://server.com/checkmirrors.php

        db-table 'mirrors':
        id, hostname, pingtime

        checkmirrors.php:
        Schema: Hosts resolven und anpingen, Ausführungszeit messen und in table 'mirrors' eintragen (Eintrag 'TIMEOUT' in pingtime, falls nicht erfolgreich)

        index.php:
        Mirror-Daten aus der table 'mirrors' holen (am besten noch mit 'ORDER BY pingtime ASC', Bild oder Text entsprechend einfügen...

        /*
        In diesem Block wie üblich zur DB connecten und Query senden.
        */
        echo '<table>';
        while ($data = mysql_fetch_array($result) {
        if ($data[pingtime]=='TIMEOUT') {
        $data[pingtime] = '<img src="offline.gif>';
        } else {
        $data[pingtime] = '<img src="online.gif>';
        }
        echo '<tr><td>'.$data[hostname].'</td><td>$data[pingtime]</td></tr>';
        }
        echo '</table>';

        Also so oder so ähnlich wäre das zu realisieren. Damit hast du eine Aktualitätsauflösung von 5 Minuten. Wenn dein Webhost es zuläßt, kannst du die Zeit natürlich auch auf eine Minute setzen.

        [Editiert von Sky am 29-10-2001 um 10:58]

        CAT Music Files

        Kommentar


        • #5
          und wie sieht die checkmirrors.php aus?

          Kommentar


          • #6
            Oh nein, ich habe gehofft, dass das nicht kommt. *g*
            Ich schau mich mal kurz um

            CAT Music Files

            Kommentar


            • #7
              function getmicrotime() {
              list($usec, $sec) = explode(" ",microtime());
              return ($usec);
              }

              $timeout = 30; //maximale Wartezeit
              $result = mysql_query("SELECT hostname FROM mirrors");
              while ($data = mysql_fetch_array($result)) {
              $hostname = $data[hostname];
              $time_start = getmicrotime();
              $fp = fsockopen($hostname,80, $errno,$errstr,$timeout);
              $time_end = getmicrotime();
              if (!$fp) {
              mysql_query("UPDATE mirrors SET pingtime='TIMEOUT' WHERE hostname='$hostname'");
              } else {
              $exec_time = $time_end - $time_start;
              mysql_query("UPDATE mirrors SET pingtime='$exec_time' WHERE hostname='$hostname'");
              }
              }

              oder so ähnlich.

              CAT Music Files

              Kommentar

              Lädt...
              X