phpbar.de logo

Mailinglisten-Archive

[php] pruefen einer url

[php] pruefen einer url

Ulf Wendel ulf_(at)_redsys.de
Mon, 10 Jan 2000 22:11:33 +0000


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