URLs auf Existenz testen?

Hallo!

Ich möchte gerne (möglichst schnell) URLs auf ihre Existenz testen
in der Art

if (URL_exists($url)) … .

URLs sollen folgendermaßen aussehen können:

http://www.host.com
http://www.host.com/index.htm
http://www.host.com/index.htm?action=show

Mit fopen() geht es ziemlich langsam. Geht es irgendwie schneller?

MFG
Volker

Hallo!

Ich möchte gerne (möglichst schnell) URLs auf ihre Existenz
testen
in der Art

if (URL_exists($url)) … .

URLs sollen folgendermaßen aussehen können:

http://www.host.com
http://www.host.com/index.htm
http://www.host.com/index.htm?action=show

Mit fopen() geht es ziemlich langsam. Geht es irgendwie
schneller?

MFG

Hi Volker,

Ich verwende dazu immer folgendes (Funktionsname nach Deinen Wünschen abgeändert):

function URL\_exists($check\_url) {
 return (@file\_get\_contents($check\_url));
}
$url = "http://www.host.com";
if (URL\_exists($url)) ... .

das @ brauchts, damit im Fehlerfalle keine Warnung ausgegeben wird, sondern einfach FALSE zurückgegeben wird. Mit der Geschwindigkeit hatte ich damit noch nie Probleme, das hängt aber auch von der Response-Zeit der zu überprüfenden Seite ab.

Gruß,
Rudy

Hallo!

Wenn ich damit einen Link teste funktioniert das scriptes nicht mehr. Eigentlich sollte eine Liste mit links in einer Tabelle erscheinen, es erscheint jedoch nur eine einzige Zelle die zudem auch noch leer ist.
Leider weiss ich nicht warum.

MFG, Volker

Hallo !

Hallo!

Ich möchte gerne (möglichst schnell) URLs auf ihre Existenz
testen
in der Art

if (URL_exists($url)) … .

http://php-faq.de/q/q-code-links-testen.html

Alexander

Der Tip von Alexander ist gut, fsockopen oder der php-linkcheck sind taugliche Alternativen. Eigentlich seltsam, dass es nicht funktioniert, ich teste meine Links auch immer mit file_get_contents und hatte noch nie irgendwelche Probs damit. Wenn Du eine Fehlerausgabe sehen möchtest, mach das @ weg und Du siehst vielleicht, warum es nicht funktioniert. Wenn alle Stricke reißen, poste mal ein Code-Snippet zum Testen.

Gruß,
Rudy

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]