php FreeBSD系统探测程序

 更新时间:2016年11月25日 17:34  点击:1982

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);
 $buf = explode("n", do_command("vmstat", ""));
 $buf = explode(" ", trim($buf[2]));

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

 $buf = explode("n", do_command("swapinfo", "-k"));
 $buf = $buf[1];
 preg_match_all("/([0-9]+)s+([0-9]+)s+([0-9]+)/", $buf, $bufArr);
 $res['swapTotal'] = round($bufArr[1][0]/1024, 2);
 $res['swapUsed'] = round($bufArr[2][0]/1024, 2);
 $res['swapFree'] = round($bufArr[3][0]/1024, 2);
 $res['swapPercent'] = (floatval($res['swapTotal'])!=0)?round($res['swapUsed']/$res['swapTotal']*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;
}

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']."<br>";
  $res['cpu']['cache'] .= $cpuinfo[0]['L2CacheSize']."<br>";
 }
 // SYSINFO
 $sysinfo = GetWMI($wmi,"Win32_OperatingSystem", array('LastBootUpTime','TotalVisibleMemorySize','FreePhysicalMemory','Caption','CSDVersion','SerialNumber','InstallDate'));
 $res['win_n'] = $sysinfo[0]['Caption']." ".$sysinfo[0]['CSDVersion']." <b>序列号</b>:{$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;
}

function sys_linux() {
 // CPU
 if (false === ($str = @file("/proc/cpuinfo"))) return false;
 $str = implode("", $str);
 @preg_match_all("/models+names{0,}:+s{0,}([ws)(@.]+)([rn]+)/s", $str, $model);
 @preg_match_all("/caches+sizes{0,}:+s{0,}([d.]+s{0,}[A-Z]+[rn]+)/", $str, $cache);
 if (false !== is_array($model[1])) {
  $res['cpu']['num'] = sizeof($model[1]);
  for($i = 0; $i < $res['cpu']['num']; $i++) {
   $res['cpu']['model'][] = $model[1][$i];
   $res['cpu']['cache'][] = $cache[1][$i];
  }
  if (false !== is_array($res['cpu']['model'])) $res['cpu']['model'] = implode("<br />", $res['cpu']['model']);
  if (false !== is_array($res['cpu']['cache'])) $res['cpu']['cache'] = implode("<br />", $res['cpu']['cache']);
 }

 // UPTIME
 if (false === ($str = @file("/proc/uptime"))) return false;
 $str = explode(" ", implode("", $str));
 $str = trim($str[0]);
 $min = $str / 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 === ($str = @file("/proc/meminfo"))) return false;
 $str = implode("", $str);
 preg_match_all("/MemTotals{0,}:+s{0,}([d.]+).+?MemFrees{0,}:+s{0,}([d.]+).+?SwapTotals{0,}:+s{0,}([d.]+).+?SwapFrees{0,}:+s{0,}([d.]+)/s", $str, $buf);

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

 $res['swapTotal'] = round($buf[3][0]/1024, 2);
 $res['swapFree'] = round($buf[4][0]/1024, 2);
 $res['swapUsed'] = ($res['swapTotal']-$res['swapFree']);
 $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;}

php检测服务器的运行能力

// 检测函数支持
function isfun($funName) {
 return (false !== function_exists($funName))?'支持':'<font color=red>不支持</font>';
}

//整数运算能力测试
function test_int() {
 $timeStart = gettimeofday();
 for($i = 0; $i < 3000000; $i++) {
  $t = 1+1;
 }
 $timeEnd = gettimeofday();
 $time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"];
 $time = round($time, 3)."秒";
 return $time;
}

//浮点运算能力测试
function test_float() {
 //得到圆周率值
 $t = pi();
 $timeStart = gettimeofday();
 for($i = 0; $i < 3000000; $i++) {
  //开平方
  sqrt($t);
 }
 $timeEnd = gettimeofday();
 $time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"];
 $time = round($time, 3)."秒";
 return $time;
}

//IO能力测试
function test_io() {
 $fp = @fopen(PHPSELF, "r");
 $timeStart = gettimeofday();
 for($i = 0; $i < 10000; $i++) {
  @fread($fp, 10240);
  @rewind($fp);
 }
 $timeEnd = gettimeofday();
 @fclose($fp);
 $time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"];
 $time = round($time, 3)."秒";
 return($time);
}

php 生成xml代码class XMLParser {

 function getChildren($vals, &$i) {

  $children = array();
  if(isset($vals[$i]['value'])) {
   $children['VALUE'] = $vals[$i]['value'];
  }

  while(++$i < count($vals)) {
   switch($vals[$i]['type']) {

   case 'cdata':
    if(isset($children['VALUE'])) {
     $children['VALUE'] .= $vals[$i]['value'];
    } else {
     $children['VALUE'] = $vals[$i]['value'];
    }
    break;

   case 'complete':
    if(isset($vals[$i]['attributes'])) {
     $children[$vals[$i]['tag']][]['ATTRIBUTES'] = $vals[$i]['attributes'];
     $index = count($children[$vals[$i]['tag']]) - 1;

     if(isset($vals[$i]['value'])) {
      $children[$vals[$i]['tag']][$index]['VALUE'] = $vals[$i]['value'];
     } else {
      $children[$vals[$i]['tag']][$index]['VALUE'] = '';
     }
    } else {
     if(isset($vals[$i]['value'])) {
      $children[$vals[$i]['tag']][]['VALUE'] = $vals[$i]['value'];
     } else {
      $children[$vals[$i]['tag']][]['VALUE'] = '';
     }
    }
    break;

   case 'open':
    if(isset($vals[$i]['attributes'])) {
     $children[$vals[$i]['tag']][]['ATTRIBUTES'] = $vals[$i]['attributes'];
     $index = count($children[$vals[$i]['tag']]) - 1;
     $children[$vals[$i]['tag']][$index] = array_merge($children[$vals[$i]['tag']][$index], $this->getChildren($vals, $i));
    } else {
     $children[$vals[$i]['tag']][] = $this->GetChildren($vals, $i);
    }
    break;

   case 'close':
    return $children;
   }
  }
 }

 function getXMLTree($data) {

  $parser = xml_parser_create('UTF-8');
  xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 0);
  xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
  xml_parse_into_struct($parser, $data, $vals, $index);
  xml_parser_free($parser);

  $tree = array();
  $i = 0;

  if(isset($vals[$i]['attributes'])) {
   $tree[$vals[$i]['tag']][]['ATTRIBUTES'] = $vals[$i]['attributes'];
   $index = count($tree[$vals[$i]['tag']]) - 1;
   $tree[$vals[$i]['tag']][$index] =  array_merge($tree[$vals[$i]['tag']][$index], $this->getChildren($vals, $i));
  } else {
   $tree[$vals[$i]['tag']][] = $this->getChildren($vals, $i);
  }
  return $tree;
 }
}

[!--infotagslink--]

相关文章

  • C#开发Windows窗体应用程序的简单操作步骤

    这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
  • C++调用C#的DLL程序实现方法

    本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • 微信小程序 页面传值详解

    这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
  • C#使用Process类调用外部exe程序

    本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
  • BootStrap栅格系统、表单样式与按钮样式源码解析

    这篇文章主要为大家详细解析了BootStrap栅格系统、表单样式与按钮样式源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-01-23
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • 微信小程序二维码生成工具 weapp-qrcode详解

    这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
  • uniapp微信小程序:key失效的解决方法

    这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • python实现学生通讯录管理系统

    这篇文章主要为大家详细介绍了python实现学生通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-25
  • 将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文

    时常会写用c#一些程序,但如何将他们和photoshop一样的大型软件打成一个压缩包,以便于发布....2020-06-25
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • 微信小程序 网络请求(GET请求)详解

    这篇文章主要介绍了微信小程序 网络请求(GET请求)详解的相关资料,需要的朋友可以参考下...2016-11-22
  • 微信小程序自定义tabbar组件

    这篇文章主要为大家详细介绍了微信小程序自定义tabbar组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-14
  • 微信小程序如何获取图片宽度与高度

    这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • 微信小程序实现点击导航条切换页面

    这篇文章主要为大家详细介绍了微信小程序实现点击导航条切换页面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-11-19