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中将html中的br换行符转换为文本输入中的换行符
Mar 26 PHP
PHP判断数据库中的记录是否存在的方法
Nov 14 PHP
Thinkphp调用Image类生成缩略图的方法
Mar 07 PHP
php调整服务器时间的方法
Apr 03 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
Sep 22 PHP
php二维码生成
Oct 19 PHP
学习php设计模式 php实现单例模式(singleton)
Dec 07 PHP
Laravel5权限管理方法详解
Jul 26 PHP
PHP 与 UTF-8 的最佳实践详细介绍
Jan 04 PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 PHP
PHP封装的page分页类定义与用法完整示例
Dec 24 PHP
PHP的new static和new self的区别与使用
Nov 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
SONY SRF-22W(33W)的电路分析和维修案例
2021/03/02 无线电
PHP 的Opcache加速的使用方法
2017/12/29 PHP
php通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
Laravel框架之解决前端显示图片问题
2019/10/24 PHP
Prototype使用指南之enumerable.js
2007/01/10 Javascript
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
怎么清空javascript数组
2013/05/11 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
详解NODEJS的http实现
2018/01/04 NodeJs
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
2020/04/22 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
用python的turtle模块实现给女票画个小心心
2019/11/23 Python
python中return的返回和执行实例
2019/12/24 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
Python实现读取并写入Excel文件过程解析
2020/05/27 Python
Python如何发送与接收大型数组
2020/08/07 Python
使用phonegap进行提示操作的具体方法
2017/03/30 HTML / CSS
解决html5中的video标签ios系统中无法播放使用的问题
2020/08/10 HTML / CSS
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
实用求职信范文分享
2013/12/25 职场文书
十八届三中全会宣传方案
2014/02/21 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
2014年房产销售工作总结
2014/12/08 职场文书
2014年居委会工作总结
2014/12/09 职场文书
周一给客户的问候语
2015/11/10 职场文书
PHP中strval()函数实例用法
2021/06/07 PHP
如何用Python搭建gRPC服务
2021/06/30 Python