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 相关文章推荐
MySQL数据源表结构图示
Jun 05 PHP
PHP STRING 陷阱原理说明
Jul 24 PHP
php小型企业库存管理系统的设计与实现代码
May 16 PHP
PHP读取xml方法介绍
Jan 12 PHP
Windows7下的php环境配置教程
Feb 28 PHP
PHP正则删除HTML代码中宽高样式的方法
Jun 12 PHP
PHP中关键字interface和implements详解
Jun 14 PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 PHP
PHP编程中的Session阻塞问题与解决方法分析
Aug 07 PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 21 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 07 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
Oct 27 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
PHP+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
理解Angular的providers给Http添加默认headers
2017/07/04 Javascript
简单实现js鼠标跟随效果
2020/08/02 Javascript
微信小程序常用简易小函数总结
2019/02/01 Javascript
vue+element UI实现树形表格带复选框的示例代码
2019/04/16 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
vue 组件基础知识总结
2021/01/26 Vue.js
python 异常处理总结
2016/10/18 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
Python对象属性自动更新操作示例
2018/06/15 Python
Centos下实现安装Python3.6和Python2共存
2018/08/15 Python
Python3随机漫步生成数据并绘制
2018/08/27 Python
python global关键字的用法详解
2019/09/05 Python
Python数据结构dict常用操作代码实例
2020/03/12 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
Python可以用来做什么
2020/11/23 Python
编辑个人求职信范文
2013/09/21 职场文书
工作时间上网检讨书
2014/02/03 职场文书
八年级语文教学反思
2014/02/11 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
基层党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
酒店辞职书怎么写
2015/02/26 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
导游词之山东八大关
2019/12/18 职场文书
python基础之爬虫入门
2021/05/10 Python
python 实现图片特效处理
2022/04/03 Python