$res['memRealFree'] = $res['memTotal'] - $res['memRealUsed']; //真实空闲
$res['memRealPercent'] = (floatval($res['memTotal'])!=0)?round($res['memRealUsed']/$res['memTotal']*100,2):0; //真实内存使用率

$res['memCachedPercent'] = (floatval($res['memCached'])!=0)?round($res['memCached']/$res['memTotal']*100,2):0; //Cached内存使用率

$res['swapTotal'] = round($buf[4][0]/1024, 2);

$res['swapFree'] = round($buf[5][0]/1024, 2);

$res['swapUsed'] = round($res['swapTotal']-$res['swapFree'], 2);

$res['swapPercent'] = (floatval($res['swapTotal'])!=0)?round($res['swapUsed']/$res['swapTotal']*100,2):0;


// LOAD AVG

if (false === ($str = @file("/proc/loadavg"))) return false;

$str = explode(" ", implode("", $str));

$str = array_chunk($str, 4);

$res['loadAvg'] = implode(" ", $str[0]);


return $res;

}



//FreeBSD系统探测

function sys_freebsd()
{

//CPU

if (false === ($res['cpu']['num'] = get_key("hw.ncpu"))) return false;

$res['cpu']['model'] = get_key("hw.model");

//LOAD AVG

if (false === ($res['loadAvg'] = get_key("vm.loadavg"))) return false;

//UPTIME

if (false === ($buf = get_key("kern.boottime"))) return false;

$buf = explode(' ', $buf);

$sys_ticks = time() - intval($buf[3]);

$min = $sys_ticks / 60;

$hours = $min / 60;

$days = floor($hours / 24);

$hours = floor($hours - ($days * 24));

$min = floor($min - ($days * 60 * 24) - ($hours * 60));

if ($days !== 0) $res['uptime'] = $days."天";

if ($hours !== 0) $res['uptime'] .= $hours."小时";

$res['uptime'] .= $min."分钟";

//MEMORY

if (false === ($buf = get_key("hw.physmem"))) return false;

$res['memTotal'] = round($buf/1024/1024, 2);


$str = get_key("vm.vmtotal");

preg_match_all("/\nVirtual Memory[\:\s]*\(Total[\:\s]*([\d]+)K[\,\s]*Active[\:\s]*([\d]+)K\)\n/i", $str, $buff, PREG_SET_ORDER);

preg_match_all("/\nReal Memory[\:\s]*\(Total[\:\s]*([\d]+)K[\,\s]*Active[\:\s]*([\d]+)K\)\n/i", $str, $buf, PREG_SET_ORDER);


$res['memRealUsed'] = round($buf[0][2]/1024, 2);

$res['memCached'] = round($buff[0][2]/1024, 2);

$res['memUsed'] = round($buf[0][1]/1024, 2) + $res['memCached'];

$res['memFree'] = $res['memTotal'] - $res['memUsed'];

$res['memPercent'] = (floatval($res['memTotal'])!=0)?round($res['memUsed']/$res['memTotal']*100,2):0;


$res['memRealPercent'] = (floatval($res['memTotal'])!=0)?round($res['memRealUsed']/$res['memTotal']*100,2):0;


return $res;

}



//取得参数值 FreeBSD

function get_key($keyName)
{

return do_command('sysctl', "-n $keyName");

}



//确定执行文件位置 FreeBSD

function find_command($commandName)
{

$path = array('/bin', '/sbin', '/usr/bin', '/usr/sbin', '/usr/local/bin', '/usr/local/sbin');

foreach($path as $p)
{

if (@is_executable("$p/$commandName")) return "$p/$commandName";

}

return false;

}



//执行系统命令 FreeBSD

function do_command($commandName, $args)
{

$buffer = "";

if (false === ($command = find_command($commandName))) return false;

if ($fp = @popen("$command $args", 'r'))
{

while (!@feof($fp))
{

$buffer .= @fgets($fp, 4096);

}

return trim($buffer);

}

return false;

}



//windows系统探测

function sys_windows()
{

if (PHP_VERSION >= 5)
{

$objLocator = new COM("WbemScripting.SWbemLocator");

$wmi = $objLocator->ConnectServer();

$prop = $wmi->get("Win32_PnPEntity");

}
else
{
return false;

}



//CPU

$cpuinfo = GetWMI($wmi,"Win32_Processor", array("Name","L2CacheSize","NumberOfCores"));

$res['cpu']['num'] = $cpuinfo[0]['NumberOfCores'];

if (null == $res['cpu']['num'])
{

$res['cpu']['num'] = 1;

}/*

for ($i=0;$i<$res['cpu']['num'];$i++)
{

$res['cpu']['model'] .= $cpuinfo[0]['Name']."<br />";

$res['cpu']['cache'] .= $cpuinfo[0]['L2CacheSize']."<br />";

}*/
$cpuinfo[0]['L2CacheSize'] = ' ('.$cpuinfo[0]['L2CacheSize'].')';
if($res['cpu']['num']==1)
$x1 = '';
else
$x1 = ' ×'.$res['cpu']['num'];
$res['cpu']['model'] = $cpuinfo[0]['Name'].$cpuinfo[0]['L2CacheSize'].$x1;

// SYSINFO

$sysinfo = GetWMI($wmi,"Win32_OperatingSystem", array('LastBootUpTime','TotalVisibleMemorySize','FreePhysicalMemory','Caption','CSDVersion','SerialNumber','InstallDate'));

$sysinfo[0]['Caption']=iconv('GBK', 'UTF-8',$sysinfo[0]['Caption']);

$sysinfo[0]['CSDVersion']=iconv('GBK', 'UTF-8',$sysinfo[0]['CSDVersion']);

$res['win_n'] = $sysinfo[0]['Caption']." ".$sysinfo[0]['CSDVersion']." 序列号:{$sysinfo[0]['SerialNumber']} 于".date('Y年m月d日H:i:s',strtotime(substr($sysinfo[0]['InstallDate'],0,14)))."安装";

//UPTIME

$res['uptime'] = $sysinfo[0]['LastBootUpTime'];


$sys_ticks = 3600*8 + time() - strtotime(substr($res['uptime'],0,14));

$min = $sys_ticks / 60;

$hours = $min / 60;

$days = floor($hours / 24);

$hours = floor($hours - ($days * 24));

$min = floor($min - ($days * 60 * 24) - ($hours * 60));

if ($days !== 0) $res['uptime'] = $days."天";

if ($hours !== 0) $res['uptime'] .= $hours."小时";

$res['uptime'] .= $min."分钟";


//MEMORY

$res['memTotal'] = round($sysinfo[0]['TotalVisibleMemorySize']/1024,2);

$res['memFree'] = round($sysinfo[0]['FreePhysicalMemory']/1024,2);

$res['memUsed'] = $res['memTotal']-$res['memFree']; //上面两行已经除以1024,这行不用再除了

$res['memPercent'] = round($res['memUsed'] / $res['memTotal']*100,2);


$swapinfo = GetWMI($wmi,"Win32_PageFileUsage", array('AllocatedBaseSize','CurrentUsage'));


// LoadPercentage

$loadinfo = GetWMI($wmi,"Win32_Processor", array("LoadPercentage"));

$res['loadAvg'] = $loadinfo[0]['LoadPercentage'];


return $res;

}



function GetWMI($wmi,$strClass, $strValue = array())
{

$arrData = array();


$objWEBM = $wmi->Get($strClass);

$arrProp = $objWEBM->Properties_;

$arrWEBMCol = $objWEBM->Instances_();

foreach($arrWEBMCol as $objItem)
{

@reset($arrProp);

$arrInstance = array();

foreach($arrProp as $propItem)
{

eval("\$value = \$objItem->" . $propItem->Name . ";");

if (empty($strValue))
{

$arrInstance[$propItem->Name] = trim($value);

}
else
{

if (in_array($propItem->Name, $strValue))

Prev | Next
Pg.: 1 2 3 4 5 6 7 8 ... 10


Back to home | File page

Subscribe | Register | Login | N