【www.gdgbn.com--系统相关】

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() {
 $objLocator = new COM("WbemScripting.SWbemLocator");
 $wmi = $objLocator->ConnectServer();
 $prop = $wmi->get("Win32_PnPEntity");
 //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"]."
";
  $res["cpu"]["cache"] .= $cpuinfo[0]["L2CacheSize"]."
";
 }
 // SYSINFO
 $sysinfo = GetWMI($wmi,"Win32_OperatingSystem", array("LastBootUpTime","TotalVisibleMemorySize","FreePhysicalMemory","Caption","CSDVersion","SerialNumber","InstallDate"));
 $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"] = $sysinfo[0]["TotalVisibleMemorySize"];
 $res["memFree"] = $sysinfo[0]["FreePhysicalMemory"];
 $res["memUsed"] = $res["memTotal"] - $res["memFree"];
 $res["memPercent"] = round($res["memUsed"] / $res["memTotal"]*100,2);

 $swapinfo = GetWMI($wmi,"Win32_PageFileUsage", array("AllocatedBaseSize","CurrentUsage"));
 // TODO swp区获取
 $res["swapTotal"] = $swapinfo[0][AllocatedBaseSize];
 $res["swapUsed"] = $swapinfo[0][CurrentUsage];
 $res["swapFree"] = $res["swapTotal"] - $res["swapUsed"];
 $res["swapPercent"] = (floatval($res["swapTotal"])!=0)?round($res["swapUsed"]/$res["swapTotal"]*100,2):0;

 // 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)) {
     $arrInstance[$propItem->Name] = trim($value);
    }
   }
  }
  $arrData[] = $arrInstance;
 }
 return $arrData;
}

本文来源:http://www.gdgbn.com/aspjiaocheng/16085/