KOMPOOS.NL

real time server load - PHP

home » php » real-time-server-load-script.html

sitemap


voorbeeld cross browser realtime server load meter

server load display
NaN

uitleg real time server check procedure

Om de belasting van jouw server (real-time) zichtbaar te maken moet je een php-file maken met de naam server-load.php, en de code die je hieronder kunt vinden daarin plaatsen. In dezelfde directory waar je de php-file plaatst maak je een html(of een php-file)-file aan. In de head-sectie plaats je de stylesheet, en in de body-sectie plaats je het javascript (zo laag als mogelijk) en de html-code (dáár waar je de meter wilt laten zien). De graphic voor de server load display moet je ook nog naar jouw webruimte kopieren. De broncode van de procedure is foutloos.

Alle benodigde sub-files worden automatisch aangemaakt en bijgewerkt door de procedure. Zorg er alleen voor dat de directory schrijfrechten geeft aan de files.

html code voor de server-load meter


<div id="container-server-load">
        <div id="server-load-body"></div>
        <div id="server-load-status">
                <img src="server-load.jpg" height="200" width="10" /></div>
        <div id="server-load-meter"></div>
        <div id="maximum-load"><div id="load-top"></div><div id="load-midden"></div><div id="load-bottom">NaN</div><div></div></div>
</div>

broncode voor de php-file "server-load.php"


<?php
$block_overload=0;
$b="/home/het_absolute_pad_naar/public_html/php/laad-piek.txt";
$q="/home/het_absolute_pad_naar/public_html/php/laad-tijd.txt";
if (file_exists($q)){
        if(time()-filemtime($q)<10){
                $block_overload=1;}}
else{
        $block_overload=0;}
if (!file_exists($b)){
        $block_overload=0;}
if($block_overload==0){
        $load=sys_getloadavg();
        $load_seconden=$load[0];
        $r=@fopen($q,'w');
        @fwrite($r,"$load_seconden");
        @fclose($r);
        if(file_exists($b)){
                $laad_piek=@file_get_contents("http://JOUW-DOMEIN-NAAM.nl/php/laad-piek.txt");
                if((1*$laad_piek)>1*($load_seconden*3)){
                        $verlaag=($load_seconden*2);
                        $verlaag=round($verlaag);
                        if($verlaag<3){$verlaag=3.22;}
                        $k=@fopen($b,'r+');
                        @fwrite($k,"$verlaag");
                        @fclose($k);}
                if($load_seconden>$laad_piek){
                        $r=@fopen($b,'r+');
                        @fwrite($r,"$load_seconden");
                        @fclose($r);}}
        else{
                $r=@fopen($b,'a+');
                @fwrite($r,"$load_seconden");
                @fclose($r);}}
?>

stylesheet voor de realtime load-average php procedure


<style type="text/css">
        #container-server-load{
                margin-left:40px;
                border:3px solid #1a1414;
                background:#0a0;
                height:220px;
                width:30px;
                text-align:left}
        #server-load-body{
                background:#222;
                display:block;
                width:30px;
                height:220px;
                position:absolute}
        #server-load-status{
                background:#0fc;
                display:block;
                width:10px;
                height:200px;
                margin-top:0px;
                margin-left:10px;
                position:absolute}
        #server-load-meter{
                background:#222;
                display:block;
                width:30px;
                height:70px;
                position:absolute}
        #maximum-load{
                font-size:smaller;
                color:#0a5;
                margin-top:-3px;
                border:3px solid #1a1414;
                background:#222;
                text-align:center;
                float:right;
                margin-left:30px;
                display:block;
                width:50px;
                height:220px;
                position:absolute}
        #load-top,#load-midden{
                margin-bottom:80px}
</style>

javascript voor de realtime server-load procedure


<script>
/*global document: false */
/*global window: false */
/*global setInterval: false */
/*global XMLHttpRequest: false */
/*global ActiveXObject: false */
var realtime_load_server = "NaN",
realtime_piek_server = "NaN",
display_meter = 90,
server_loop = 0,
server_load_top_display = document.getElementById('load-top'),
server_load_center_display = document.getElementById('load-midden'),
server_load_bottom_display = document.getElementById('load-bottom');
function lees_real_time_server_load_data() {
    var xmlhttp;
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (xmlhttp !== null) {
        xmlhttp.open("POST", "laad-tijd.txt", false);
        xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
        xmlhttp.send();
        var huidige_server_load_data = xmlhttp.responseText;
        realtime_load_server = parseFloat(huidige_server_load_data);
    }
}
function lees_real_time_piek_data() {
    var xmlhttp;
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (xmlhttp !== null) {
        xmlhttp.open("POST", "laad-piek.txt", false);
        xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
        xmlhttp.send();
        var huidige_server_piek_data = xmlhttp.responseText;
        realtime_piek_server = parseFloat(huidige_server_piek_data);
    }
    lees_real_time_server_load_data();
}
function stress_server() {
    var stress_object = false;
    if (window.XMLHttpRequest) {
        stress_object = new XMLHttpRequest();
        if (stress_object.overrideMimeType) {
            stress_object.overrideMimeType('text/xml');
        }
    } else if (window.ActiveXObject) {
        try {
            stress_object = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                stress_object = new ActiveXObject('Microsoft.XMLHTTP');
            } catch (ee) {
                stress_object = false;
            }
        }
    }
    return stress_object;
}
var http = stress_server();
function get_server_load() {
    http.open('get', 'server-load.php');
    http.send(null);
}
function adjust_load_meter() {
    server_loop++;
    if (server_loop === 100) {
        get_server_load();
        lees_real_time_piek_data();
        server_loop = 0;
        display_meter = 200 - (realtime_load_server * (200 / realtime_piek_server));
    }
    server_load_top_display.innerHTML = realtime_piek_server;
    server_load_center_display.innerHTML = Math.round((realtime_piek_server / 2) * 100) / 100;
    server_load_bottom_display.innerHTML = realtime_load_server;
    document.getElementById("server-load-meter").style.height = display_meter + (Math.floor(Math.random() * 8)) + "px";
    return false;
}
setInterval(function() {
    adjust_load_meter();
    }, 100);
</script>
Gebruik voor alle voorbeelden op de http://kompoos.nl een valide html5 pagina.