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 相关文章推荐
截获网站title标签之家内容的例子
Oct 09 PHP
[转帖]PHP世纪万年历
Dec 06 PHP
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
Nov 18 PHP
PHP array_flip() 删除重复数组元素专用函数
May 16 PHP
php处理json时中文问题的解决方法
Apr 12 PHP
php Rename 更改文件、文件夹名称
May 24 PHP
php中数字0和空值的区别分析
Jun 05 PHP
php提高网站效率的技巧
Sep 29 PHP
php中namespace use用法实例分析
Jan 22 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
php插件Xajax使用方法详解
Aug 31 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
Mar 01 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 接口类与抽象类的实际作用
2009/11/26 PHP
php入门学习知识点二 PHP简单的分页过程与原理
2011/07/14 PHP
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
PHP字符串的编码问题的详细介绍
2013/04/27 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
php+mysqli使用面向对象方式查询数据库实例
2015/01/29 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
javascript实现二分查找法实现代码
2007/11/12 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
Jquery实现简单的轮播效果(代码管用)
2016/03/14 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
2016/06/20 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
JavaScript比较同一天的时间大小实例代码
2018/02/09 Javascript
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
jQuery幻灯片插件owlcarousel参数说明中文文档
2018/02/27 jQuery
修改npm全局安装模式的路径方法
2018/05/15 Javascript
解决Python 遍历字典时删除元素报异常的问题
2016/09/11 Python
python实现数据库跨服务器迁移
2018/04/12 Python
django url到views参数传递的实例
2019/07/19 Python
Python3 无重复字符的最长子串的实现
2019/10/08 Python
Python和Sublime整合过程图示
2019/12/25 Python
python3 pathlib库Path类方法总结
2019/12/26 Python
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
依法行政工作汇报
2014/10/28 职场文书
委托书格式范文
2015/01/28 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
法定代表人免职证明
2015/06/24 职场文书
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python