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 04 PHP
php 模拟POST提交的2种方法详解
Jun 17 PHP
数组与类使用PHP的可变变量名需要的注意的问题
Jun 20 PHP
curl实现站外采集的方法和技巧
Jan 31 PHP
php实现俄罗斯乘法实例
Mar 07 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
PHP实现上传图片到 zimg 服务器
Oct 19 PHP
PHP实现按之字形顺序打印二叉树的方法
Jan 16 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
Jun 13 PHP
thinkPHP和onethink微信支付插件分享
Aug 11 PHP
php正则表达式使用方法整理集合
Jan 31 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 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
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
2007/03/15 PHP
用php过滤危险html代码的函数
2008/07/22 PHP
php debug 安装技巧
2011/04/30 PHP
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
PHP分多步骤填写发布信息的简单方法实例代码
2012/09/23 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
PHP实现唤起微信支付功能
2019/02/18 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
用一段js程序来实现动画功能
2007/03/06 Javascript
js中关于new Object时传参的一些细节分析
2011/03/13 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
jQuery插件jquery-barcode实现条码打印的方法
2015/11/25 Javascript
基于JavaScript实现简单的随机抽奖小程序
2016/01/05 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
js实现瀑布流效果(自动生成新的内容)
2017/03/16 Javascript
Vue中对比scoped css和css module的区别
2018/05/17 Javascript
layui 阻止图片上传的实例(before方法)
2019/09/26 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
旅游与酒店管理的自我评价分享
2013/11/03 职场文书
寒假实习自荐信
2014/01/26 职场文书
分公司总经理岗位职责
2014/08/03 职场文书
邮政营业员岗位职责
2015/04/14 职场文书
党小组鉴定意见
2015/06/02 职场文书
停发工资证明范本
2015/06/12 职场文书
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python
MySQL开启事务的方式
2021/06/26 MySQL