当前位置: 移动技术网 > IT编程>开发语言>PHP > php在windows环境下获得cpu内存实时使用率(推荐)

php在windows环境下获得cpu内存实时使用率(推荐)

2018年02月10日  | 移动技术网IT编程  | 我要评论

后台实时监控服务器的cup与内存占用率的场景很常见,虽然没做过,但是着手写代码之前我真没想到会花2个多小时才最终实现。

网上虽然搜 php cup 内存 使用率 这一类关键字出来的文章一大把,但大都是在linux环境下,windows下只有提出靠cmd语句实现的观点,但少有实际直接可行的代码,辗转试了一遍 wmic , systeminfo 各种并不熟稔的cmd命令,并没有找到可行的方案,最终通过百度知道 的一篇答案找到利用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内存实时使用率,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网