http://www.elsop.com/quick/quick.cgi
das ist der linkchecker, den ich immer benutze.
links nur in der db?
dann lass sie über ein script ausgeben und test dann.
Hi Ihrs,
ich suche eine Möglichkeit Links zu überprüfen. Nicht nach Richtigkeit, sondern nach Erreichbarkeit und anderes.
Ich habe eine DB-Tabelle mit allen aufgerufenen Links meiner Webseite.
Ich will dann einfach alle Links nochmal überprüfen, ob diese auch wirklich erreichbar sind/waren und/oder Fehler ausspucken, wie "Seite nicht gefunden", "Domain nicht erreichbar" usw. Das wäre sehr hilfreich, damit die Webseite jederzeit aktuell bleiben kann.
Ich habs mal mit fopen ausprobiert, aber der gibt eben kein FALSE wieder, wenn die Seite nicht erreichbar ist oder läd sich dann tot, wenn die Seite nicht vorhanden ist.Außerdem weiß ich dann nicht, was mit der Seite dann los ist, wie oben beschrieben...
Ich hoffe mir kann einer helfen
Vielen Dank auch.
Dreamflower.
http://www.elsop.com/quick/quick.cgi
das ist der linkchecker, den ich immer benutze.
links nur in der db?
dann lass sie über ein script ausgeben und test dann.
das ist nicht das was ich genau suche. Das Skript wird als Cronjob laufen und es soll nur die Links überprüfen. Aber ich hab das jetzt mit fsockopen gelöst. Bei dem kann man außerdem noch ein Port angeben und er gibt Dir die Fehlermeldungen wieder und den Fehlerstring.
Nur jetzt habe ich wieder ein Problem. Ich habe für das Skript ein Time-Out von 0. Also unbegrenzt. Bei fsockopen kann man einen Time-Out von 30 Sekunden angeben. Nun läuft das Skript eigentlich ganz gut, nur hängt es irgendwo noch. Ich habe 125 Links in der Datenbank. Die werden aber alle durchgegangen (das weiß ich, weil ich alle Ergebnisse in eine Datei speichere und nicht zum Browser schicke). Nur warum er dann das Skript nicht beendet, kann ich nicht sagen...Es sind ungefähr 15 Links fehlerhaft oder ungültig. Das Skript müßte also maximal um die 8 Minuten laufen. Tut es aber nicht. Läuft nämlich immernoch...Das kann dann schon wieder nicht sein. Ich füge mal das Skript hier rein:
PHP-Code:set_time_limit(0);
require("../start.php");
$temp = "
SELECT URL, Seite
FROM ".$DB["Links"];
$result = mysql_query($temp);
$timer = time(); $html = ""; $x = 0; $text = ""; $fehler = 0;
while ($data = mysql_fetch_array($result)) {
$x++;
$URL = $data["URL"];
$URLInfo = parse_url($URL);
$DocumentPath = ($URLInfo["path"])?$URLInfo["path"]:"/";
if ($URLInfo["query"]) {
$DocumentPath = $DocumentPath."?".$URLInfo["query"];
}
$conn = fsockopen($URLInfo["host"], 80, &$errno, &$errstr, 30);
if ($conn) {
$host = $URLInfo["host"];
$headinfo = fgets($conn,22);
$errornum = substr($headinfo, 9, 3);
if ($errornum > 399) {
$fehler++;
$temp = "SELECT URL FROM ".$DB["Seiten"]." WHERE ID = ".$data["Seite"];
$data2 = mysql_fetch_row(mysql_query($temp));
$html.= $x.". $errornum <a href=\"$URL\" target=\"_blank\">$URL</a> (Seite: ".$data2[0].")<br>\n";
$text.= $x.". $errornum $URL (Seite: ".$data2[0].")\n";
}
} else {
$fehler++;
$temp = "SELECT URL FROM ".$DB["Seiten"]." WHERE ID = ".$data["Seite"];
$data2 = mysql_fetch_row(mysql_query($temp));
$html.= $x.". Unknown <a href=\"$URL\" target=\"_blank\">$URL</a> (Seite: ".$data2[0].")<br>\n";
$text.= $x.". Unknown $URL (Seite: ".$data2[0].")\n";
}
fclose($conn);
}
Wie gesagt, alle Links werden durchgegangen. Nur kommt er dann nicht mehr über die while-Schleife! Denn dort wird dann alles ausgegeben, bzw. gespeichert.
Dreamflower.
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)