Att se hur bra upptiden är kan vara intressant.
Längst ner i info-rutan under grafen står nu varje stations upptid. Upptiden är beräknad på det senaste året, och om stationen inte har funnits på temperatur.nu i ett år sedan stationen lades till.
Kod: Markera allt
<?php
include("functions.php"); //Standarduppsättning av funktioner från temperatur.nu
init_db(); //Initiera mysql-databasen
$check = mysql_query("SELECT id, stad2, UNIX_TIMESTAMP(start),active from temperatur"); //Hämta id, alias, timestamp för start samt active för alla stationer
while (list($id, $stad,$start,$active) = mysql_fetch_row($check)) {
if (file_exists("/special/termo/rrdb/temperatur_$stad.rrd")) { //Om databasen existerar kör...
$sluttid_db=floor(time()/3600)*3600-3600; //Ett försök att få ut timvärdena, fungerar dåligt i praktiken, men spelar inte så stor roll.
if (time() - $start < 31536000){ //Om stationen har funnits kortare tid än ett år på temperatur.nu
$starttid_db = "e-".(floor((time()-$start)/3600)-1)."h"; //Sätt starttiden till stationens starttid minus 1h. Försök till att hämta hela timmar.
}else
$starttid_db = "e-8759h"; //Om stationen funnits längre tid än ett år sätts starttiden till ett år minus 1 timme
$cmd="/usr/bin/rrdtool fetch -r 3600 --start $starttid_db -e $sluttid_db /special/termo/rrdb/temperatur_$stad.rrd AVERAGE"; //grundkommando för att läs
a ut från rrdtool enligt tidsspann ovan.
$if = popen("$cmd|grep nan|wc -l","r"); //räkna antalet rader med nan
$num_offline = trim(fgets($if));
$if = popen("$cmd|wc -l","r");// räkna totala antalet rader-
$num_total = trim(fgets($if));
$uptime = round(((1-($num_offline/$num_total))*100),1); //Räkna fram %satsen
echo "$stad har en upptid på $uptime% - no:$num_offline,nt:$num_total,db_start:$starttid_db,Aktiv:$active\n"; //Debug
mysql_query("UPDATE temperatur set uptime='$uptime' where id='$id'");//Uppdatera databasen.
}
}