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

 更新时间:2018年02月08日 13:37:14   作者:asseek   我要评论

这篇文章主要介绍了php在windows环境下获得 cpu 内存实时使用率的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

后台实时监控服务器的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内存实时使用率,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对澳门金沙网上娱乐网站的支持!

相关文章

  • php判断是否连接上网络的方法实例详解

    php判断是否连接上网络的方法实例详解

    本文主要介绍PHP判断是否连接上网络的方法,通过php判断能否打开百度页面来判断是否连接上网络的功能,需要的朋友可以参考下
    2016-12-12
  • PHP关键特性之命名空间实例详解

    PHP关键特性之命名空间实例详解

    命名空间主要是为了解决代码中类和函数可能存在冲突的问题。这篇文章给大家介绍php关键特性之命名空间,包括命名空间的定义等知识点,需要的朋友参考下吧
    2017-05-05
  • Yii2框架自定义验证规则操作示例

    Yii2框架自定义验证规则操作示例

    这篇文章主要介绍了Yii2框架自定义验证规则操作,结合实例形式分析了Yii2自定义验证规则实现方法、操作技巧与注意事项,需要的朋友可以参考下
    2019-02-02
  • PHP实现微信小程序用户授权的工具类示例

    PHP实现微信小程序用户授权的工具类示例

    这篇文章主要介绍了PHP实现微信小程序用户授权的工具类示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Symfony2创建基于域名的路由相关示例

    Symfony2创建基于域名的路由相关示例

    这篇文章主要介绍了Symfony2创建基于域名的路由,结合实例形式分析了Symfony2路由的创建技巧,需要的朋友可以参考下
    2016-11-11
  • php中文验证码实现示例分享

    php中文验证码实现示例分享

    这篇文章主要介绍了使用php实现中文验证码,代码简单,大家可以直接使用
    2014-01-01
  • php实现和c#一致的DES加密解密实例

    php实现和c#一致的DES加密解密实例

    下面小编就为大家带来一篇php实现和c#一致的DES加密解密实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • PHP图片等比缩放类SimpleImage使用方法和使用实例分享

    PHP图片等比缩放类SimpleImage使用方法和使用实例分享

    这篇文章主要介绍了PHP图片等比缩放类SimpleImage使用方法和使用实例分享,需要的朋友可以参考下
    2014-04-04
  • 基于PHP实现用户注册登录功能

    基于PHP实现用户注册登录功能

    本课程通过使用PHP及Web前端技术实现一个网站注册登录入口页面,学习并实践PHP编程等,有兴趣的同学可以参考一下。
    2016-10-10
  • yii2中关于加密解密的那些事儿

    yii2中关于加密解密的那些事儿

    yii2.0怎么对传输的数据进行加密解密?下面这篇文章就来给大家介绍了yii2中关于加密解密的那些事儿,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-06-06

最新评论