PDA

View Full Version : Does anyone know why this dont work?


bashy
07-20-2006, 10:04 PM
Hi peeps

Anyone know why this aint showing the serverloads please?
Its also not showing the uptime as well....
It used to on my last server but im on a freeBSD now....

Evrything else works fine...

? Os: FreeBSD
? PHP: 4.4.2
? MySQL: 4.1.20
? Sql Size: 38MB
? Time: 18:08:21
? Date: 20 Jul 2006
? GMT: -0500

<?php
global $DB;
$loadavg_array = explode(" ", exec("cat /proc/loadavg"));
$loadavg = $loadavg_array[2];
$uptime = shell_exec("cut -d. -f1 /proc/uptime");
$days = floor($uptime/60/60/24);
$hours = $uptime/60/60%24;
$mins = $uptime/60%60;
$secs = $uptime%60;
// Ok lets define some language here so we can show something
define("_OS","Os:");
define("_PHP","PHP:");
define("_MYSQL","MySQL:");
define("_TIME","Time:");
define("_DATE","Date:");
define("_GMT","GMT:");
define("_DBS","Sql Size:");
// Well thats the end of the language def file oh yeah

function file_size_info($filesize) {
$bytes = array('KB', 'KB', 'MB', 'GB', 'TB'); # values are always displayed
if ($filesize < 1024) $filesize = 1; # in at least kilobytes.
for ($i = 0; $filesize > 1024; $i++) $filesize /= 1024;
$file_size_info['size'] = ceil($filesize);
$file_size_info['type'] = $bytes[$i];
return $file_size_info;
}

// Calculate DB size by adding table size + index size:
$rows = $DB->query("Show TABLE STATUS");
$dbsize = 0;
while ($row = $DB->fetch_row($rows)) {
$dbsize += $row['Data_length'] + $row['index_length'];
}

$dbsize = file_size_info($dbsize);

// ok lets print it all out to the nice pretty little block ohhhh baby
$content .="<big><b>?</b></big> "._OS." " .substr(php_uname(),0,7);
$content .="<br /><big><b>?</b></big> "._PHP." " .phpversion();
$content .="<br /><big><b>?</b></big> "._MYSQL." " .mysql_get_server_info();
$content .="<br /><big><b>?</b></big> "._DBS." " .$dbsize['size'] .$dbsize['type'];
$content .="<br /><big><b>?</b></big> "._TIME." " .date("H:i:s",time()+($mosConfig_offset*60*60));
$content .="<br /><big><b>?</b></big> "._DATE." " .date("d M Y");
$content .="<br /><big><b>?</b></big> "._GMT." " .date("O");
$content .= "</br><br><big><b>?</b></big>Server Uptime<br>";
$content .= "</br><big><b>?</b></big>Days : {$days} Hours {$hours}<br>";
$content .= "</br><big><b>?</b></big>Mins : {$mins} secs {$secs}<br>";
$content .= "</br><big><b>?</b></big>Server Load Avg: {$loadavg}%";
$content .= "<br>n";

unset($rows);
unset($filesize);
unset($bytes);
unset($dbsize);
unset($file_size_info);
unset($loadavg_array);
unset($loadavg);
unset($uptime);
unset($days);
unset($hours);
unset($mins);
unset($secs);
?>

SaintDog
07-21-2006, 04:49 PM
Do you have root access to the server or are you on a shared/reseller hosting account?

bashy
07-21-2006, 05:16 PM
I am on a dedicated server but not root access cause its managed
What ya thinking?

SaintDog
07-21-2006, 05:19 PM
I know that some hosting companies limit what can be pulled and what information can be seen/executed with PHP/Perl, though if you're on a dedicated server those limitations probably were not implemented.

bashy
07-21-2006, 05:35 PM
Ah right i know what ya saying.....
Perhaps for my server i need some slightly different code....

This is the microstats hack pulls the serverload no probs...


if ($loadavg = @file_get_contents("/proc/loadavg")) {

$regs = explode(" ",$loadavg);
$serverload = ' [Server Loads: <b>' . $regs[0] .'</b> ' . $regs[1] . ' : ' . $regs[2] . ']';

}elseif ($stats=@exec('uptime')) {

preg_match('/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/',$stats,$regs);
$serverload = ' [Server Loads: <b>' . $regs[1] .'</b> ' . $regs[2] . ' : ' . $regs[3] . ']';

}elseif ($loadavg = @`sysctl vm.loadavg|cut -d" " -f3-5`) {

$regs = explode(" ",$loadavg);
$serverload = ' [Server Loads: <b>' . $regs[0] .'</b> ' . $regs[1] . ' : ' . $regs[2] . ']';

}


$debughtml .= iif($_TEMPLATEQUERIES, ' (<b>' . sizeof($_TEMPLATEQUERIES) . '</b> queries for uncached templates)', '') . "$serverload";


This aint all of it but looks like its the serverload section..
Tis works fine...but mine a few posts back just wont have it..
I have tried to incorperate some of the microstats code but i
dont know what im doing lol