andreas: Monitoring Script

Beitrag lesen

Hi!

Nein, das möchtest du wirklich nicht tun, es sei denn du hast meinen Beitrag weiter unten nicht gelesen. http://forum.de.selfhtml.org/?m=23367&t=4111.

Hatte ich gelesen, aber es handelt sich hier um gehostete Webserver, wo ich auf sowas keinen Einfluß nehmen kann. Aber ich habe definitiv keinen Zugriff von extern. Ich meine jetzt nicht direkt auf die DB, sondern auch nicht über den Werbserver.(also vom Script aus)

Wenn sogar der Webserver weg ist, dann bringt dir die Datenbank nämlich auch nichts mehr :)

Hast Recht.

Zum Aufrufen externer Seiten finden sich reichlich Beispiele bei http://www.php.net/manual/de/function.fsockopen.php. Im Prinzip musst du nur ein fsockopen("www.webserver.de", 80) machen und das was du zurückkriegst wie eine Datei behandeln.
Wenn du nur wissen willst, ob die Skriptdatei und der Webserver noch da sind, schreibst du dann "HEAD /deinskript.php HTTP/1.1\nHost: www.webserver.de\n\n" rein (ohne Anführungszeichen) und schaust ob etwas in der Art von "HTTP/1.1 200 OK" zurückkommt (+ ein bisschen mehr).
Fehlerbehandlung (Verbindungsaufbau verweigert, Timeout, etc.) musst du natürlich noch extra machen.

Vielen Dank! Sowas hatte sich schon länger gesucht! Ich hab das jetzt mal so gemacht:

<?
$fp = fsockopen ("www.server.de", 80, &$errno, &$errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br>\n";
} else {
$fp2 = fputs ($fp, "HEAD /test/hallo.php HTTP/1.1\nHost: www.server.de\n\n");
    while (!feof($fp)) {
        echo fgets($fp,$fp2);
    }
    fclose($fp);
}
?>

echo fgets($fp,$fp2);
kann ich das so machen, oder sollte da direkt die Zahl stehen?

Das komische ist, dass das Script so etwa 10-20 Sekunden braucht - wofür, für das bischen was da zurück kommt!

Eine 2. Version:

<?
$fp = fsockopen ("www.server.de", 80, &$errno, &$errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br>\n";
} else {
$fp2 = fputs ($fp, "HEAD /test/hallo.php HTTP/1.1\nHost: www.server.de\n\n");
        echo fgets($fp,$fp2);
fclose($fp);
}
?>

Einfach nur die While Schleife weggelassen und das ganze dauert nur ein Sekunde und ich bekomme die Information, zum Glück "200"!

Nochwas komisches, hab das so von php.net übernommen, aber wnn ich oben nur mal so einen falschen Server angebe, steht das nichts von Error... nur "(0)"
Warum?

Und die Nummer hole ich mir dann über den Substring?:

$nr = substr (fgets($fp,$fp2), 9,3);

Oder spricht was dagegen?
Anhand der Nummer kann ich ja dann andere Aktionen einleiten!

Jedenfalls vielen Dank bis jetzt!

Grüsse
  Andreas

PS: Welche Informationen wären wohl noch interessant, wenn man jetzt schonmal sowas macht?