<kbd id='woaibaidu'></kbd><address id='woaibaidu'><style id='woaibaidu'></style></address><button id='woaibaidu'></button>

          当前位置:主页 > 网络编程 > PHP编程 >
            php在windows环境下获得cpu内存实时使用率(推荐)
            2018-02-12 22:02 发布 次浏览

          后台实时监控效劳器的CUP与内存占用率的场景很罕见,虽然没做过,可是着手写代码之前我真没想到会花2个多小时才终究完成。

          网上虽然搜 PHP CUP 内存 运用率 这1类要害字出来的文章1大把,但多数是在Linux情况下,windows下只要提出靠cmd语句完成的观念,但少有实践直接可行的代码,展转试了1遍 wmic , systeminfo 种种其实不熟稔的cmd下令,并没有找到可行的方案,终究经过百度晓得 的1篇谜底找到应用vbs获得的完成方式,略加改良,可以在windows情况下直接运用。

          类代码

          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']}%";

          总结

          以上所述是小编给各人引见的php在windows情况下取得cpu内存实时运用率,希望对各人有所协助,假如各人有任何疑问请给我留言,小编会实时回复各人的。在此也十分感激各人对聚合网网站的支持!