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版(5)
Oct 09 PHP
PHP Zip解压 文件在线解压缩的函数代码
May 26 PHP
php网上商城购物车设计代码分享
Feb 15 PHP
php如何解决无法上传大于8M的文件问题
Mar 10 PHP
PHP源码分析之变量的存储过程分解
Jul 03 PHP
PHP使用递归生成文章树
Apr 21 PHP
浅谈php的优缺点
Jul 14 PHP
thinkPHP使用post方式查询时分页失效的解决方法
Dec 09 PHP
PHP模拟post提交数据方法汇总
Feb 16 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
Apr 27 PHP
CI框架简单分页类用法示例
Jun 06 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
Sep 17 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设计模式 Command(命令模式)
2011/06/26 PHP
php判断变量类型常用方法
2012/04/24 PHP
基于MySQL到MongoDB简易对照表的详解
2013/06/03 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
showModalDialog在谷歌浏览器下会返回Null的解决方法
2013/11/27 Javascript
jQuery返回定位插件详解
2017/05/15 jQuery
js中getter和setter用法实例分析
2018/08/14 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
2019/06/27 Python
python实现广度优先搜索过程解析
2019/10/19 Python
Python获取二维数组的行列数的2种方法
2020/02/11 Python
解决Pycharm 导入其他文件夹源码的2种方法
2020/02/12 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
2020/03/04 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
浅谈keras.callbacks设置模型保存策略
2020/06/18 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
浅析图片上传及canvas压缩的流程
2020/06/10 HTML / CSS
彪马英国官网:PUMA英国
2019/02/11 全球购物
关于Java String的一道面试题
2013/09/29 面试题
extern是什么意思
2016/03/10 面试题
策划总监岗位职责
2014/02/16 职场文书
党的群众路线教育实践活动总结报告
2014/07/03 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
无房产证房屋转让协议书合同样本
2014/10/18 职场文书
教师个人成长总结
2015/02/11 职场文书
亮剑观后感
2015/06/05 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
Django中session进行权限管理的使用
2021/07/09 Python
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript