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数据库开发知多少
Oct 09 PHP
使用网络地址转换实现多服务器负载均衡
Oct 09 PHP
PHP原理之异常机制深入分析
Aug 08 PHP
解析CodeIgniter自定义配置文件
Jun 18 PHP
php自定文件保存session的方法
Dec 10 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
Mar 19 PHP
分享五个PHP7性能优化提升技巧
Dec 07 PHP
基于thinkPHP类的插入数据库操作功能示例
Jan 06 PHP
phpMyAdmin通过密码漏洞留后门文件
Nov 20 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
Apr 15 PHP
Laravel使用RabbitMQ的方法示例
Jun 18 PHP
PHP 计算两个时间段之间交集的天数示例
Oct 24 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
PL-880隐藏功能
2021/03/01 无线电
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
laravel 去掉index.php伪静态的操作方法
2019/10/12 PHP
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
js密码强度校验
2015/11/10 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
2017/07/28 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
2017/11/22 Javascript
jquery点击回车键实现登录效果并默认焦点的方法
2018/03/09 jQuery
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
Vue-cli@3.0 插件系统简析
2018/09/05 Javascript
vue elementui form表单验证的实现
2018/11/11 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
ES6 Class中实现私有属性的一些方法总结
2019/07/08 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
Python生成数字图片代码分享
2017/10/31 Python
使用python实现BLAST
2018/02/12 Python
python集合比较(交集,并集,差集)方法详解
2018/09/13 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
python调用摄像头拍摄数据集
2019/06/01 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
英国医生在线预约:Top Doctors
2019/10/30 全球购物
如何写好升职自荐信
2014/01/06 职场文书
工作年限证明模板
2015/06/15 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
Oracle笔记
2021/04/05 Oracle
Pandas 数据编码的十种方法
2022/04/20 Python