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代码
Mar 03 PHP
优化PHP代码的53条建议
Mar 27 PHP
php curl 伪造IP来源的实例代码
Nov 01 PHP
PHPEXCEL 使用小记
Jan 06 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
Aug 21 PHP
完美解决thinkphp验证码出错无法显示的方法
Dec 09 PHP
PHP中让curl支持sock5的代码实例
Jan 21 PHP
php实现将Session写入数据库
Jul 26 PHP
PHP生成图片验证码功能示例
Jan 12 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
实例讲解PHP表单验证功能
Feb 15 PHP
Centos7安装swoole扩展操作示例
Mar 26 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
用cookies来跟踪识别用户
2006/10/09 PHP
可输入的下拉框
2006/06/19 Javascript
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
js综合应用实例简单的表格统计
2013/09/03 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
2019/02/13 Javascript
Vue学习之组件用法实例详解
2020/01/06 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
[49:35]LGD vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
python装饰器与递归算法详解
2016/02/18 Python
python中import reload __import__的区别详解
2017/10/16 Python
浅谈python之新式类
2018/08/12 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
python使用SQLAlchemy操作MySQL
2020/01/02 Python
python实现随机加减法生成器
2020/02/24 Python
适合各种场合的美食礼品:Harry & David
2016/08/03 全球购物
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
机关财务管理制度
2014/01/17 职场文书
高中生物教学反思
2014/02/05 职场文书
工程质量承诺书
2014/03/27 职场文书
陈胜吴广起义口号
2014/06/20 职场文书
市政工程技术专业自荐书
2014/07/06 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
2014年民政工作总结
2014/11/26 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
保姆聘用合同
2015/09/21 职场文书
演讲稿之我的初心我的成长
2019/08/12 职场文书
bootstrapv4轮播图去除两侧阴影及线框的方法
2022/02/15 HTML / CSS