问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php的服务器cpu数量怎么获取

发布网友 发布时间:2022-05-05 00:46

我来回答

2个回答

热心网友 时间:2022-06-27 22:32

<?php
header("Content-type: text/html; charset=utf-8"); 
error_reporting(E_ALL ^ E_DEPRECATED);
//linux系统探测
function sys_linux() {
    // CPU
    if (false === ($str = @file("/proc/cpuinfo"))) return false;
    $str = implode("", $str);
    @preg_match_all("/model\s+name\s{0,}\:+\s{0,}([\w\s\)\(\@.-]+)([\r\n]+)/s", $str, $model);
    @preg_match_all("/cpu\s+MHz\s{0,}\:+\s{0,}([\d\.]+)[\r\n]+/", $str, $mhz);
    @preg_match_all("/cache\s+size\s{0,}\:+\s{0,}([\d\.]+\s{0,}[A-Z]+[\r\n]+)/", $str, $cache);
    @preg_match_all("/bogomips\s{0,}\:+\s{0,}([\d\.]+)[\r\n]+/", $str, $bogomips);
    if (false !== is_array($model[1]))    {
    $res['cpu']['num'] = sizeof($model[1]);
    $res['cpu']['num_text'] = str_replace(array(1,2,4,8,16), array('单','双','四','八','十六'), $res['cpu']['num']).'核';
        /*
        for($i = 0; $i < $res['cpu']['num']; $i++) {
            $res['cpu']['model'][] = $model[1][$i].'&nbsp;('.$mhz[1][$i].')';
            $res['cpu']['mhz'][] = $mhz[1][$i];
            $res['cpu']['cache'][] = $cache[1][$i];
            $res['cpu']['bogomips'][] = $bogomips[1][$i];
        }*/
    $x1 = ($res['cpu']['num']==1) ? '' : ' ×'.$res['cpu']['num'];
        $mhz[1][0] = ' | 频率:'.$mhz[1][0];
        $cache[1][0] = ' | 二级缓存:'.$cache[1][0];
        $bogomips[1][0] = ' | Bogomips:'.$bogomips[1][0];
        $res['cpu']['model'][] = $model[1][0].$mhz[1][0].$cache[1][0].$bogomips[1][0].$x1;
        if (false !== is_array($res['cpu']['model'])) $res['cpu']['model'] = implode("<br />", $res['cpu']['model']);
        if (false !== is_array($res['cpu']['mhz'])) $res['cpu']['mhz'] = implode("<br />", $res['cpu']['mhz']);
        if (false !== is_array($res['cpu']['cache'])) $res['cpu']['cache'] = implode("<br />", $res['cpu']['cache']);
        if (false !== is_array($res['cpu']['bogomips'])) $res['cpu']['bogomips'] = implode("<br />", $res['cpu']['bogomips']);
    }
    // NETWORK
    // 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("/MemTotal\s{0,}\:+\s{0,}([\d\.]+).+?MemFree\s{0,}\:+\s{0,}([\d\.]+).+?Cached\s{0,}\:+\s{0,}([\d\.]+).+?SwapTotal\s{0,}\:+\s{0,}([\d\.]+).+?SwapFree\s{0,}\:+\s{0,}([\d\.]+)/s", $str, $buf);
      preg_match_all("/Buffers\s{0,}\:+\s{0,}([\d\.]+)/s", $str, $buffers);
    $res['mem_total'] = round($buf[1][0]/1024, 2);
    $res['mem_free'] = round($buf[2][0]/1024, 2);
    $res['mem_buffers'] = round($buffers[1][0]/1024, 2);
      $res['mem_cached'] = round($buf[3][0]/1024, 2);
    $res['mem_used'] = $res['mem_total']-$res['mem_free'];
    $res['mem_percent'] = (floatval($res['mem_total'])!=0)?round($res['mem_used']/$res['mem_total']*100,2):0;
    $res['mem_real_used'] = $res['mem_total'] - $res['mem_free'] - $res['mem_cached'] - $res['mem_buffers']; //真实内存使用
      $res['mem_real_free'] = $res['mem_total'] - $res['mem_real_used']; //真实空闲
    $res['mem_real_percent'] = (floatval($res['mem_total'])!=0)?round($res['mem_real_used']/$res['mem_total']*100,2):0; //真实内存使用率
      $res['mem_cached_percent'] = (floatval($res['mem_cached'])!=0)?round($res['mem_cached']/$res['mem_total']*100,2):0; //Cached内存使用率
    $res['swap_total'] = round($buf[4][0]/1024, 2);
    $res['swap_free'] = round($buf[5][0]/1024, 2);
    $res['swap_used'] = round($res['swap_total']-$res['swap_free'], 2);
    $res['swap_percent'] = (floatval($res['swap_total'])!=0)?round($res['swap_used']/$res['swap_total']*100,2):0;
    // LOAD AVG
    if (false === ($str = @file("/proc/loadavg"))) return false;
    $str = explode(' ', implode("", $str));
    $str = array_chunk($str, 4);
    $res['load_avg'] = implode(' ', $str[0]);
    return $res;
}

//FreeBSD系统探测
function sys_freebsd() {
    //CPU
    if (false === ($res['cpu']['num'] = get_key("hw.ncpu"))) return false;
  $res['cpu']['num_text'] = str_replace(array(1,2,4,8,16), array('单','双','四','八','十六'), $res['cpu']['num']).'核';
    $res['cpu']['model'] = get_key("hw.model");
    //LOAD AVG
    if (false === ($res['load_avg'] = 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['mem_total'] = 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['mem_real_used'] = round($buf[0][2]/1024, 2);
  $res['mem_cached'] = round($buff[0][2]/1024, 2);
  $res['mem_used'] = round($buf[0][1]/1024, 2) + $res['mem_cached'];
  $res['mem_free'] = $res['mem_total'] - $res['mem_used'];
  $res['mem_percent'] = (floatval($res['mem_total'])!=0)?round($res['mem_used']/$res['mem_total']*100,2):0;
  $res['mem_real_percent'] = (floatval($res['mem_total'])!=0)?round($res['mem_real_used']/$res['mem_total']*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;
}


//windows系统探测
function sys_windows() {
    if(PHP_VERSION >= 5) {
        $obj_locator = new COM("WbemScripting.SWbemLocator");
        $wmi =& $obj_locator->ConnectServer();
    } 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;
    }
  $res['cpu']['num_text'] = str_replace(array(1,2,4,8,16), array('单','双','四','八','十六'), $res['cpu']['num']).'核';
  /*
    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'].')';
  $x1 = ($res['cpu']['num']==1) ? '' : ' ×'.$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 = 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['mem_total'] = round($sysinfo[0]['TotalVisibleMemorySize']/1024,2);
    $res['mem_free'] = round($sysinfo[0]['FreePhysicalMemory']/1024,2);
    $res['mem_used'] = $res['mem_total']-$res['mem_free'];    //上面两行已经除以1024,这行不用再除了
    $res['mem_percent'] = round($res['mem_used'] / $res['mem_total']*100,2);
    //LoadPercentage
    $loadinfo = GetWMI(&$wmi, "Win32_Processor", array("LoadPercentage"));
    $res['load_avg'] = $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;
}

//根据操作系统取得CPU相关信息
switch(PHP_OS) {
  case "Linux":
    $sysReShow = (($sys_info = sys_linux()) !== false) ? "show" : "none";
    break;
  case "FreeBSD":
    $sysReShow = (($sys_info = sys_freebsd()) !== false) ? "show" : "none";
    break;
  case "WINNT":
    $sysReShow = (($sys_info = sys_windows()) !== false) ? "show" : "none";
    break;
  default:
    break;
}
?>

此PHP类,根据操作系统来进行判断。

调用<?php echo '['.$sys_info['cpu']['num_text'].'] '.$sys_info['cpu']['model']; ?>

热心网友 时间:2022-06-27 22:32

参考:http://zhidao.baidu.com/question/500693663.html

在cmd下 用批处理语句获取windows的CPU 内存使用情况的语句,找下。
然后php有执行 OS 原生脚本的函数,跟你在CMD下执行一样。
执行完,获取返回的信息即可。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
大同四区和市区的区别 大同云冈属于哪里 大同市云冈区建成区范围都有哪些 it wasn't long before i found a job.---before是什么意思 It wasn't long before a man from It wasn't long before和It won't be long before有什么区别吗? it wasn't long before和it won't be long before有什么不同?_百度知 ... 微信怎么查和一个好友的红包记录 马龙巴黎奥运会夺冠了吗 明天是中国的情人节??? 处理器AMD A12 9700P RADEON R7,10 COMPUTE CORES 4C+6G AMD 速龙 II P320参数 j有一种饮料瓶,底面直径12cm,高15cm。给这种饮料设计包装盒,若没盒装4瓶可照下图包装。请你想一想,若1 饮料包装设计有什么要点 如何设计饮料包装.flv 挫折在人生发展中具有哪些积极意义 常见的茶饮料各种包装设计形式有哪些 请问承兑汇票如何入账,是不是任意银行都可以?过期了怎么写证明? 挫折磨练意志事实论据 挫折与磨难的名言警句 同学们,在可口可乐包装设计中,你认为值得我们学习借鉴的地方有哪些呢?请附图片说明_百度问一问 排查表做完保存完怎么发到微信 小米mix2 发热吗 挫折作文 什么叫把挫折和苦难看作磨练自己成长的机会? 如何看待 小米mix2发热问题 黄豆还能做出什么好吃的请画出来 磨炼意志的磨炼,是“磨炼”还是“磨练”? 联通小米Mix2发烫,自动重启,什么鬼 电脑开机cpu散热风扇转一会就不转了,然后过一会又自动开机还是转不了 AMD A8-7500 Radeon R7, 10 Compute Cores 4C+6G 四核 AMD A8-7100Radeon R5,8Compute Cores 4C+4g 1.80GHZ 华硕k52d series CPU AMD phenom ll 2 cores N660 3.0G HELP!!! 我的AMD3800+ 用CPU-Z显示怎么是cores 1 threads 1 包菜是白的好还是青的好 电瓶车的充电器,充电时小风扇不转了怎么办?充电是正常的,就是充电器散不了热,很烫手还能修吗? 为什么我的微信突然,不能领钱了? 电瓶车充电器风扇不转能充电吗 求解充电器灯是红色,风扇不转,还在充电中吗 充电器充电时候风扇不转是充电器坏了吗? 微信提不了钱怎么办 充电器风扇不转 怎么回事啊 充电器风扇不转能冲电吗 微信没办法领钱怎么办 组合贷可以提取公积金还商贷吗 组合贷款可以用公积金支取还商贷部分吗 常州地区组合贷的话可以先把公积金账户里的钱取出来先还商贷吗? 成都地区2019年年组合贷款(商贷 公积金)买房,2020年能够提取公积金吗? 如何辨别乌鸡的真假 组合贷,公积金提前还完,还商贷能从公积金提取出来吗