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

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

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

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

调用方法:

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

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

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