Mailinglisten-Archive |
Andreas Zaugg - CAB Services AG wrote: > Wie kann ich abfragen, ob eine url existiert? Hallo Andreas, was meinst Du mir "abfragen, ob eine URL existiert"? Ich denke an drei Interpretationen der Frage +++ ist URL vergeben? +++ Ob die URL vergeben wurde und aktiviert wurde kannst Du ausschließlich durch eine Anfrage beim zuständigen (De)NIC ermitteln. +++ Ist der Server erreichbar? +++ Da fopen() meines Wissens nach wie vor kein Timeout kennt, ist die Funktion ungeeignet, um zu ermitteln ob ein Server erreichbar ist. Statt dessen sollte versucht werden, eine Verbindung mit fsockopen() (http://www.php.net/manual/function.fsockopen.php3) aufzubauen. fsockopen() akzeptiert als fünften Parameter einen double Wert, der die Sekunden bis zum Abbruch der Funktion enthält. Der Aufruf: $fp = fsockopen("www.redsys.de", 80, &$errno, &$errstr, 2); versucht zwei Sekunden lang eine Verbindung zum Server www.redsys.de herzustellen. +++ Existiert die Datei xy.html auf dem Server? +++ Nachdem mit fsockopen() festgestellt wurde, daß eine Verbindung aufgebautr werden kann, kann durch einen HTTP-Request ermittelt werden ob eine bestimmte Datei auf dem Remote-Server existiert. Du kannst die Datei entweder gleich auslesen: if ($fp) { fputs($fp, "GET xy.html HTTP/1.1\n\n"); while (!feof($fp)) echo fgets($fp, 4096); } oder dich vorsichtig herantasten in dem Du nur den HEAD - quasi die Dateibeschreibung - anforderst: if ($fp) { fputs($fp, "HEAD xy.html HTTP/1.1\n\n"); while (!feof($fp)) echo fgets($fp, 4096); } Ulf
php::bar PHP Wiki - Listenarchive