Servercheck mit PHP

h4dhunTer

Erfahrenes Mitglied
Hallo,

ich möchte meine Seite mittels PHPauf Port 80 Prüfen wie auf http://www.webwatch4u.de . Da könnte ich mich ja anmelden, möchte aber selber das auf dem Server haben und eigene Seite schnell hinzufügen können.

Kann mir also einer Sagen, was ich schreiben muss?

Das wichtige ist, ich möchte eine Statistik aufbauen können mit z.B. 99,5% erreichbarkeit.

Danke schonmal für die Hilfe. :-)
 
Du musst nur lernen was sockets sind und wie selbige anzuwenden sind.

Dann per socket auf dem entsprechenden Port zu deinem Server connecten.

Jetzt obliegt es dir, ab wann für dich der Server erreichbar ist. Evtl. reicht schon ein annehmen der Verbindung auf Port 80. Dann hast du aber keine Garantie dafür, dass auch tatsächlich die entsprechende Website ausgeliefert wurde.

Um zu checken, ob auch die richtigen Daten geschickt werden und z.B. keine error-Seite deines Hosters, musste jetzt halt von deinem socket lesen bis keine Daten mehr da sind.

Und anschliesend das übersandte Dokument auf Richtigkeit prüfen. Hierfür dürfte sich dann wohl ein Regulärer Ausdruck eignen, anhand dem du eben das vorkommen eine bestimmten Textzeile prüfst. Du könntest z.B. einen HTML-Kommentar in die Hompage packen ala
Code:
<!-- Server up and running, don't be afraid ;) -->
Und sobald dieser Kommentar eben nicht vorhanden ist, kam eine andere Seite als erwartet und du kannst die Sache als "nicht erreichbar" werten.

Dann das alles nur noch in einen Cronjob packen und regelmäßig ausführen lassen ;)

Eigentlich ganz einfach :D
 
Hallo,

hab gerade bei goggle was passendes gefunden. :google: Tut mir leid für die Störung. :p

PHP:
<?PHP
$host = "http://seite_testen.de";
$check = @fsockopen($host, 80);

if($check){
echo '<img src="on.gif">';
}
else {
echo '<img src="off.gif">';
}
?>

Jetzt mein Problem, wie muss ich das Ausrechnen, also eintragen hab ich so ne Idee:

  1. Wie oft wurde getestet
  2. Wie oft hat es geklappt
  3. Wie offt hat es nicht geklappt

Nun ausgerechnet soll es dann da so stehen: 99,5%.
 
Du musst nicht 3 infos Speichern, nur 2 ;)
Wenn du alle Versuche hast und weist, ob wie oft es nicht ging bzw. wie of es ging, kannst du auch das Gegenteil ausrechnen.

Im Zuge dessen, dass du die Erreichbarkeit willst, wäre es von den Rechenschritte her intelligenter die Anzahl der erfolgreichen Anfragen zu speichern.

Der rest ist dann Klasse 5 oder 6 Mathematik ;)

Code:
$total = 1284;
$good = 1174;
$percents = $good * 100 / $total;

Das Prozentzeichen ans Ende ranzubekommen, überlasse ich dir als Denksportaufgabe ;)
 
Uebrigens, bei fsockopen() laesst man das http:// weg.
Denn fsockopen() ist das Protokoll erstmal egal.
Was man angeben kann ist udp:// oder ssl://
Aber Sachen wie HTTP, FTP oder aehnliches werden dann mittels fwrite() auf die Verbindung gelegt.
 
Ein z.b. FTP-Server mit http:// zu testen macht auch nicht wirklich sinn. ;)
Jeder Dienst hat ja ein bestimmte Port..... und wenn dieser bei fsockopen() mit angegeben wird, wird auch expilzit auf diesem geprüft.
Allerdings sagt dieses nur aus das der Port erreichbar ist, nicht aber ob auch der Dienst noch läuft.
 
Um mal bei den Beispielen HTTP und FTP zu bleiben:
  • HTTP
Bei HTTP kann man ja eine kurze Anfrage senden um zu pruefen ob der Server auch wirklich noch lebt.
Ungefaehr sowas:
Code:
HEAD / HTTP/1.0\r\n
Wenn man darauf eine Antwort kriegt lebt der Server wohl noch.
  • FTP
FTP-Server werfen bei Verbindung sowieso erstmal mit Text um sich, sodass man nach erfolgreichem Verbindungsaufbau direkt mal eine Zeile mittels fgets() auslesen kann.
Wenn dieser Text ausbleibt wird der Server wohl das Zeitliche gesegnet haben.
 
Zurück