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

后端开发   发布日期:2023年05月21日   浏览次数:426

通过生成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获取时的值会比较偏高。

以上就是Windows下如何利用PHP获取服务器的CPU和内存参数状态信息的详细内容,更多关于Windows下如何利用PHP获取服务器的CPU和内存参数状态信息的资料请关注九品源码其它相关文章!