Der Martin: URL auf "vorhandensein/funktion" prüfen

Beitrag lesen

Hi,

ich habe in einer Datenbanktabelle eine Spalte mit Links in der Form: http://example.com/irgendwas/nochwasanderes/?etc=1 usw.
Kann ich mittels PHP, soll dann mal ein Cronjob werden, prüfen ob die Links funktionieren?

definiere "funktionieren".

Reicht es dir zu wissen, dass unter dem angegebenen Hostnamen ein HTTP-Server werkelt? Dann genügt es, dich mit fsockopen() zu Port 80 des fraglichen Hosts zu verbinden. Ist der Host nicht erreichbar (oder antwortet niemand auf Port 80), wird fsockopen() fehlschlagen. Das merkst du am ungültigen Socket-Handle.

Oder willst du sicherstellen, dass unter exakt der angegebenen URL eine Ressource abrufbar ist? Dann setze nach dem erfolgreichen Öffnen des Sockets noch einen HTTP-HEAD-Request ab. Bekommst du einen HTTP-Fehlercode (Nummern 4xx oder 5xx), kannst du die referenzierte Ressource wohl in den Wind schreiben, bei Statuscode 2xx oder 3xx kommt zumindest etwas Sinnvolles.

So long,
 Martin

--
Wenn alle das täten, wass sie mich können,
käme ich gar nicht mehr zum Sitzen.