1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: 25754
  5. * Date: 2019/5/4
  6. * Time: 13:42
  7. */
  8.  
  9. class SystemInfoWindows
  10. {
  11. /**
  12. * 判断指定路径下指定文件是否存在,如不存在则创建
  13. * @param string $fileName 文件名
  14. * @param string $content 文件内容
  15. * @return string 返回文件路径
  16. */
  17. private function getFilePath($fileName, $content)
  18. {
  19. $path = dirname(__FILE__) . "\\$fileName";
  20. if (!file_exists($path)) {
  21. file_put_contents($path, $content);
  22. }
  23. return $path;
  24. }
  25.  
  26. /**
  27. * 获得cpu使用率vbs文件生成函数
  28. * @return string 返回vbs文件路径
  29. */
  30. private function getCupUsageVbsPath()
  31. {
  32. return $this->getFilePath(
  33. 'cpu_usage.vbs',
  34. "On Error Resume Next
  35. Set objProc = GetObject(\"winmgmts:\\\\.\\root\cimv2:win32_processor='cpu0'\")
  36. WScript.Echo(objProc.LoadPercentage)"
  37. );
  38. }
  39.  
  40. /**
  41. * 获得总内存及可用物理内存JSON vbs文件生成函数
  42. * @return string 返回vbs文件路径
  43. */
  44. private function getMemoryUsageVbsPath()
  45. {
  46. return $this->getFilePath(
  47. 'memory_usage.vbs',
  48. "On Error Resume Next
  49. Set objWMI = GetObject(\"winmgmts:\\\\.\\root\cimv2\")
  50. Set colOS = objWMI.InstancesOf(\"Win32_OperatingSystem\")
  51. For Each objOS in colOS
  52. Wscript.Echo(\"{\"\"TotalVisibleMemorySize\"\":\" & objOS.TotalVisibleMemorySize & \",\"\"FreePhysicalMemory\"\":\" & objOS.FreePhysicalMemory & \"}\")
  53. Next"
  54. );
  55. }
  56.  
  57. /**
  58. * 获得CPU使用率
  59. * @return Number
  60. */
  61. public function getCpuUsage()
  62. {
  63. $path = $this->getCupUsageVbsPath();
  64. exec("cscript -nologo $path", $usage);
  65. return $usage[0];
  66. }
  67.  
  68. /**
  69. * 获得内存使用率数组
  70. * @return array
  71. */
  72. public function getMemoryUsage()
  73. {
  74. $path = $this->getMemoryUsageVbsPath();
  75. exec("cscript -nologo $path", $usage);
  76. $memory = json_decode($usage[0], true);
  77. $memory['usage'] = Round((($memory['TotalVisibleMemorySize'] - $memory['FreePhysicalMemory']) / $memory['TotalVisibleMemorySize']) * 100);
  78. return $memory;
  79. }
  80. }

PHP 之获取Windows下CPU、内存的使用率的更多相关文章

  1. python使用wmi模块获取windows下的系统信息监控系统-乾颐堂

    Python用WMI模块获取Windows系统的硬件信息:硬盘分区.使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息. 本文实例讲述了python使用wmi模块获取w ...

  2. windows 下共享内存使用方法示例

    windows下共享内存使用方法较 linux 而言微微复杂 示例实现的功能 有一个视频文件,一块内存区域 : 程序 A,将该视频写入该内存区域 : 程序 B,从该内存区域读取该视频 : 代码模块实现 ...

  3. Windows系统CPU内存网络性能统计第一篇 内存

    最近翻出以前做过的Windows系统性能统计程序,这个程序可以统计系统中的CPU使用情况,内存使用情况以及网络流量.现在将其整理一下(共有三篇),希望对大家有所帮助. 目录如下: 1.<Wind ...

  4. 一个统计 CPU 内存 硬盘 使用率的shell脚本

    一个统计 CPU 内存 硬盘 使用率的shell脚本,供大家学习参考 #!/bin/bash #This script is use for describle CPU Hard Memery Uti ...

  5. C/C++获取Windows系统CPU和内存及硬盘使用情况

    //1.获取Windows系统内存使用率 //windows 内存 使用率 DWORD getWin_MemUsage(){ MEMORYSTATUS ms; ::GlobalMemoryStatus ...

  6. 关于获取Windows下性能参数的总结

    Windows下特定进程或者所有进程的CPU.物理内存.虚拟内存等性能参数的获取方法小结,包括如何在MFC中以及如何使用C#语言来获取参数. VC API:GlobalMemoryStatus 获取全 ...

  7. C++ windows下共享内存

    转载:https://blog.csdn.net/tojohnonly/article/details/70246965 共享内存 (也叫内存映射文件) 主要是通过映射机制实现的 , Windows ...

  8. 获取Windows下某进程监听的TCP/UDP端口

    1.在Windows下用CMD netstat命令可以获得当前进程监听端口号的信息,如netstat -ano可以看到IP.port.状态和监听的PID. 那么可以执行CMD这个进程得到监听的端口号信 ...

  9. Windows 下的内存泄漏检测方法

    在 Windows 下,可使用 Visual C++ 的 C Runtime Library(CRT) 检测内存泄漏. 首先,我们在.c或.cpp 文件首行插入这一段代码: #define _CRTD ...

随机推荐

  1. 从打击App刷榜看苹果的底线

    这两天苹果打击App刷榜者的消息刷屏了,从腾讯科技.appying多个媒体渠道看到,<安居客>.<友秘>.<微在>.<秦时明月2>.<悟空与貂蝉& ...

  2. LeetCode 438. Find All Anagrams in a String (在字符串中找到所有的变位词)

    Given a string s and a non-empty string p, find all the start indices of p's anagrams in s. Strings ...

  3. Magento 模块开发之DispatchEvent

    在这一章节中.我们来了解 Magento 中的事件分发机制 Mage::dispatchEvent() 在创建自己的模块时, Event 事件的分发将会变成十分实用且有效 以个人的经验. 事件的分发使 ...

  4. 关于C语言指针的一些新认识(1)

    Technorati 标签: 指针,数组,汇编,C语言 前言 指针是C语言的精华,但我对它一直有种敬而远之的感觉,因为一个不小心就可能让你的程序陷入莫名其妙的麻烦之中.所以,在处理字符串时,我总是能用 ...

  5. codility MinAbsSum

    For a given array A of N integers and a sequence S of N integers from the set {−1, 1}, we define val ...

  6. YTU 2705:用重载求距离

    2705: 用重载求距离. 时间限制: 1 Sec  内存限制: 128 MB 提交: 208  解决: 114 题目描述 使用函数重载的方法定义两个重名函数,分别求出整型数的两点间距离和浮点型数的两 ...

  7. RxJava使用介绍

    主讲人:阳石柏 RxJava基本概念 背压概念介绍 RxJava 2.0版本介绍及更新 一.RxJava基本概念 RxJava 在 GitHub 主页上的自我介绍是 “a library for co ...

  8. /lib/dracut/hooks/shutdown/30-dm-shutdown.sh

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABVQAAAMACAIAAABEqXuoAAAgAElEQVR4nOydPWjryOK3VaZM8RYpU2 ...

  9. IDEA Spark Streaming 操作(文件源)

    import org.apache.spark.SparkConf import org.apache.spark.streaming.{Seconds, StreamingContext} obje ...

  10. [Swift通天遁地]五、高级扩展-(10)整形、浮点、数组、字典、字符串、点、颜色、图像类的实用扩展

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...