Es gibt einige Methoden zu prüfen, ob eine Website existiert bzw. erreichbar ist. Manche Methoden laufen schnell, manche langsamer. Die drei beliebtesten Methoden sind unter http://neo22s.com/check-if-url-exists-and-is-online-php/ (offline) gegenüber gestellt, samt Ausführungszeiten. Eine Methode möchte ich im Folgenden näher erklären: Die cURL-Methode.

Hinweis: Dieses Script unterscheidet nicht zwischen "Website existiert nicht" und "Website ist nicht erreichbar". Hierfür wäre eine Abfrage einer Whois-Datenbank notwendig (soweit ich weiß 😉)

Werbung

Werbeblocker aktiv?

Vermutlich aufgrund eines Werbeblockers kann an dieser Stelle leider keine Werbung angezeigt werden. Als Blog ist diese Website jedoch darauf angewiesen, um diverse Kosten abdecken zu können. Vielleicht möchtest du Servaholics ja in deinem Werbeblocker als Ausnahme hinzufügen und so unterstützen? 🙂

  1. <?php
  2. function isWebsiteOnline($url) {
  3. 	// Prueft, ob $url eine richtige URL ist; Funktion erst seit PHP 5.2.0 Standard, ggf. entfernen
  4. 	if (!filter_var($url, FILTER_VALIDATE_URL)) {
  5. 		return false;
  6. 	}
  7.  
  8. 	// Sofern Benutzer und/oder Script keinen User Agent String haben, lassen manche Webseiten die folgenden Verbindung und damit die Abfrage nicht zu.
  9. 	// Deshalb wird in diesem Beispiel ein standardisierter User Agent String gesetzt.
  10. 	// Hier koennte auch ein eigener User Agent String verwendet werden, z.B. der eines eigenen Bots, aehnlich wie Google und sein Googlebot.
  11. 	// Beispiel: Firefox 3.6.13 auf Windows XP
  12. 	$agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";
  13.  
  14. 	$ch = curl_init(); // Startet eine cURL-Session
  15. 	if (!$ch) { die("Konnte keine cURL-Session starten. Ist auf deinem Server cURL installiert/aktiviert?"); } // falls die cURL-Session nicht gestartet werden konnte
  16.  
  17. 	// curl_setopt setzt im Folgenden mehrere Optionen für den cURL-Transfer
  18. 	curl_setopt ($ch, CURLOPT_URL, $url ); // die aufzurufende URL
  19. 	curl_setopt ($ch, CURLOPT_USERAGENT, $agent); // der zu benutzende User Agent, Erklaerung oben
  20. 	curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); // gibt den Transfer als String zurueck, gibt ihn somit nicht direkt aus
  21. 	curl_setopt ($ch, CURLOPT_VERBOSE, false); // verhindert, dass ausfuehrliche Informationen ausgegeben werden; uns reicht der HTTP-Statuscode
  22. 	curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5); // Script hat 5 Sekunden Zeit, die Verbindung aufzubauen
  23. 	curl_setopt ($ch, CURLOPT_TIMEOUT, 5); // Script hat 5 Sekunden Zeit um alle Aufgaben auszufuehren
  24.  
  25. 	curl_exec($ch); // Fuehrt die cURL-Session aus
  26. 	$info = curl_getinfo($ch); // Holt sich Informationen des Transfers
  27. 	$http_statuscode = $info['http_code']; // Waehlt den zuletzt empfangenen HTTP-Statuscode und speichert ihn
  28.  
  29. 	curl_close($ch); // Beendet die cURL-Session
  30.  
  31. 	if ($http_statuscode >= 200 AND $http_statuscode < 400) { // ggf. kann man die Grenze auch auf < 300 setzen, sofern Weiterleitung als "offline" gelten
  32. 		return true;
  33. 	} else {
  34. 		return false;
  35. 	}
  36. }
  37.  
  38. if (isWebsiteOnline("https://www.google.de")) { // Hier URL anpassen
  39. 	echo "Google ist erreichbar";
  40. } else {
  41. 	echo "Google ist nicht erreichbar.";
  42. }
  43. ?>

Deine Meinung zu diesem Artikel?


2 Kommentare zu "Prüfen ob eine Website existiert bzw. erreichbar ist" (RSS)

Was muss man alles ändern damit das funktioniert? Nur die URLs ganz unten oder?
Hi,
ich habe den Codeschnipsel ein wenig angepasst. 🙂
Genau, in Zeile 38 muss die URL angegeben werden, die geprüft werden soll.
Viele Grüße, Chris