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


Posted in PHP onFebruary 08, 2018

后台实时监控服务器的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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
Oct 09 PHP
php压缩多个CSS为一个css的代码并缓存
Apr 21 PHP
Win7 64位系统下PHP连接Oracle数据库
Aug 20 PHP
主流PHP框架的优缺点对比分析
Dec 25 PHP
php基于双向循环队列实现历史记录的前进后退等功能
Aug 08 PHP
php格式化json函数示例代码
May 12 PHP
PHP中header用法小结
May 23 PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
Sep 26 PHP
php使用curl下载指定大小的文件实例代码
Sep 30 PHP
Laravel 队列使用的实现
Jan 08 PHP
PHP论坛实现积分系统的思路代码详解
Jun 01 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 #PHP
php处理抢购类功能的高并发请求
Feb 08 #PHP
php+redis实现商城秒杀功能
Nov 19 #PHP
php+redis消息队列实现抢购功能
Feb 08 #PHP
PHP多线程模拟实现秒杀抢单
Feb 07 #PHP
PHP设计模式之装饰器模式实例详解
Feb 07 #PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 #PHP
You might like
php5.5新数组函数array_column使用
2013/07/08 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
js限制文本框只能输入数字(正则表达式)
2012/07/15 Javascript
Javascript的时间戳和php的时间戳转换注意事项
2013/04/12 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
Vue.js双向绑定实现原理详解
2016/12/22 Javascript
JS中的作用域链
2017/03/01 Javascript
详解nodejs微信公众号开发——2.自动回复
2017/04/10 NodeJs
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
2018/07/03 Javascript
Vue2.0仿饿了么webapp单页面应用详细步骤
2018/07/08 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
Python实现两款计算器功能示例
2017/12/19 Python
Python浅复制中对象生存周期实例分析
2018/04/02 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
澳大利亚最大的在线美发和美容零售商之一:My Hair Care & Beauty
2019/08/24 全球购物
POS解决方案:MUNBYN(热敏打印机、条形码扫描仪)
2020/06/09 全球购物
食品安全标语
2014/06/07 职场文书
年检委托书
2014/08/30 职场文书
2014小学一年级班主任工作总结
2014/12/05 职场文书
2015年反洗钱工作总结
2015/04/25 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
唱歌比赛拉拉队口号
2015/12/25 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python