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初学者们头痛的十四个问题
Jan 15 PHP
dedecms后台验证码总提示错误的解决方法
Mar 21 PHP
WordPress判断用户是否登录的代码
Mar 17 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
Jun 23 PHP
在Linux系统下一键重新安装WordPress的脚本示例
Jun 30 PHP
php+html5实现无刷新图片上传教程
Jan 22 PHP
PHP迭代器接口Iterator用法分析
Dec 28 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 PHP
Laravel框架定时任务2种实现方式示例
Dec 08 PHP
php命名空间设计思想、用法与缺点分析
Jul 17 PHP
PHP常用函数之根据生日计算年龄功能示例
Oct 21 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 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
Smarty模板引擎缓存机制详解
2016/05/23 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
IE关闭时判断及AJAX注销案例学习
2013/02/18 Javascript
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
2016/05/17 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
2016/06/09 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
2016/12/27 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
详解vuex commit保存数据技巧
2018/12/25 Javascript
JavaScript函数定义方法实例详解
2019/03/05 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
JS访问对象两种方式区别解析
2020/08/29 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
python使用matplotlib库生成随机漫步图
2018/08/27 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
欧洲第一中国智能手机和平板电脑网上商店:CECT-SHOP
2018/01/08 全球购物
东方通信股份有限公司VC面试题
2014/08/27 面试题
高中体育教学反思
2014/01/24 职场文书
电大毕业自我鉴定
2014/02/03 职场文书
2014年政工师工作总结
2014/12/18 职场文书
2019年中学生的思想品德评语集锦
2019/12/19 职场文书
教你nginx跳转配置的四种方式
2022/07/07 Servers