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 相关文章推荐
ADODB结合SMARTY使用~超级强
Nov 25 PHP
浅谈PHP 闭包特性在实际应用中的问题
Oct 30 PHP
第4章 数据处理-php字符串的处理-郑阿奇(续)
Jul 04 PHP
关于php连接mssql:pdo odbc sql server
Jul 20 PHP
php实现httpclient类示例
Apr 08 PHP
利用PHP如何写APP接口详解
Aug 23 PHP
PHP实现简易blog的制作
Oct 24 PHP
php readfile下载大文件失败的解决方法
May 22 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
Jun 16 PHP
php获取用户真实IP和防刷机制的实例代码
Nov 28 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
Dec 04 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
《斗罗大陆》六翼天使武魂最强,为什么老千家不是上三宗?
2020/03/02 国漫
php实现用于计算执行时间的类实例
2015/04/18 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
一个无限级XML绑定跨框架菜单(For IE)
2007/01/27 Javascript
js 提交和设置表单的值
2008/12/19 Javascript
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
2013/05/17 Javascript
javascript类型转换使用方法
2014/02/08 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
javascript判断变量是否有值的方法
2015/04/20 Javascript
快速学习JavaScript的6个思维技巧
2015/10/13 Javascript
jQuery实现的导航动画效果(附demo源码)
2016/04/01 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
简单理解vue中el、template、replace元素
2016/10/27 Javascript
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
2019/05/04 jQuery
webpack4 optimization使用总结
2019/11/10 Javascript
VUE 动态组件的应用案例分析
2019/12/02 Javascript
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
Python交换变量
2008/09/06 Python
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
2014/07/14 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
Python 生成VOC格式的标签实例
2020/03/10 Python
python利用 keyboard 库记录键盘事件
2020/10/16 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
消防安全标语
2014/06/07 职场文书
保护动物的标语
2014/06/11 职场文书
2014年文员工作总结
2014/11/18 职场文书
幼儿园园长新年寄语2015
2014/12/08 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书