PHP Skripte zügeln

Oft kommt es vor, daß ein PHP-Skript riesige Datenbank-Abfragen anstößt, ressourcenlastige Berechnungen und Operationen durchführt, oder sich in eine Endlosschleife begibt. All das sind Dinge, die einen Server schnell in die Knie zwingen können, während er versucht alle eintreffenden Anfragen weiter zu bearbeiten. Abhilfe schafft eine “Notbremse”, die die Ausführung eines Skripts ab einer bestimmten Serverlast unterbindet.

Voraussetzung ist der lesende Zugriff auf den /proc Baum auf dem Linux-/BSD-Server, im Speziellen auf die /proc/loadavg Datei. Diese beinhaltet den Load des Servers zum aktuellen Zeitpunkt an erster Stelle. Dieser lässt sich dann leicht extrahieren und in eine Abfrage einbauen die den Skript ab einem bestimmten Load einfach nicht ausführt:


// [start] :ADDED: exanto.de - Check server load
$data = @file('/proc/loadavg');
if ($data) {
    $load = (double) substr($data[0], 0, 4);
    if ($load > 30.00) {
        die('Entschuldigung, leider ist unser System momentan ueberlastet und kann Ihre 
            Anfrage nicht bearbeiten. Bitte versuchen Sie es in ein paar Minuten noch einmal. 
            Vielen Dank fuer Ihr Verstaendnis!');
    }
}
// [ end ] :ADDED: exanto.de - Check server load

Ich hoffe es hilft jemandem, mit widerspenstigen PHP-Skripten fertig zu werden ;)

Veröffentlicht unter Sonstige Getagged mit: ,

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht.

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>