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