欢迎您来到,李雷博客 | PHP博客        登录  |  注册

Windows下如何利用PHP获取服务器的CPU和内存参数状态信息

更新:2018-10-04 18:19:46
人气:7509
来源:本站整理
A+

通过生成vbs脚本获取CPU和内存信息。

<?
  class SystemInfoWindows {
  /**
   * 判断指定路径下指定文件是否存在,如不存在则创建
   * @param string $fileName 文件名
   * @param string $content 文件内容
   * @return string 返回文件路径
   */
  private function getFilePath($fileName, $content) {
    $path = dirname(__FILE__). "\\$fileName";
    if (!file_exists($path)) {
      file_put_contents($path, $content);
    }
    return $path;
  }
  /**
   * 获得cpu使用率vbs文件生成函数
   * @return string 返回vbs文件路径
   */
  private function getCupUsageVbsPath() {
    return $this -> getFilePath(
      'cpu_usage.vbs',
      "On Error Resume Next
    Set objProc = GetObject(\"winmgmts:\\\\.\\root\cimv2:win32_processor='cpu0'\")
    WScript.Echo(objProc.LoadPercentage)"
      );
  }
  /**
   * 获得总内存及可用物理内存JSON vbs文件生成函数
   * @return string 返回vbs文件路径
   */
  private function getMemoryUsageVbsPath() {
    return $this -> getFilePath(
      'memory_usage.vbs',
      "On Error Resume Next
    Set objWMI = GetObject(\"winmgmts:\\\\.\\root\cimv2\")
    Set colOS = objWMI.InstancesOf(\"Win32_OperatingSystem\")
    For Each objOS in colOS
     Wscript.Echo(\"{\"\"TotalVisibleMemorySize\"\":\" & objOS.TotalVisibleMemorySize & \",\"\"FreePhysicalMemory\"\":\" & objOS.FreePhysicalMemory & \"}\")
    Next"
          );
  }
  /**
   * 获得CPU使用率
   * @return Number
   */
  public function getCpuUsage() {
    $path = $this -> getCupUsageVbsPath();
    exec("cscript -nologo $path", $usage);
    return $usage[0];
  }
  /**
   * 获得内存使用率数组
   * @return array
   */
  public function getMemoryUsage() {
    $path = $this -> getMemoryUsageVbsPath();
    exec("cscript -nologo $path", $usage);
    $memory = json_decode($usage[0], true);
    $memory['usage'] = Round((($memory['TotalVisibleMemorySize'] - $memory['FreePhysicalMemory']) / $memory['TotalVisibleMemorySize']) * 100);
    return $memory;
  }
}
?>

调用方法:

$info = new SystemInfoWindows();
$cpu = $info->getCpuUsage();
$memory = $info->getMemoryUsage();
echo "当前系统CPU使用率:{$cpu}%,内存使用率{$memory['usage']}%";

目前看,在windows系统的服务器是可以执行并获取信息的,但是目前执行效率有点低,反应比较慢,这样也会造成CPU获取时的值会比较偏高。

推荐的文章
# 发表我的评论
  /     /  
# 最近评论

楼主网站好看啊,已经做好贵站友链。

非常感谢,正好用到这个

  Ads by Google
  联系博主
Hello,本博客系统采用PHP和MySql开发,程序开发完全是因为个人爱好,是自己纯手写PHP源代码,未采用任何PHP框架!
QQ:858353007   微信号:lileihot123
网站地图
会员服务
关于我们
QQ:858353007
 
广告服务
加我微信
移动端访问
 
 
Copyright © 2014- 2024 www.mdaima.com All Rights Reserved.
李雷博客,专注PHP经验、PHP教程及PHP源代码开源下载分享的PHP博客!   ICP备案号:京ICP备10202169号-4