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读取本地文件常用函数(fopen与file_get_contents)
Sep 09 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
Nov 11 PHP
PHP 5.3新增魔术方法__invoke概述
Jul 23 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
Nov 22 PHP
php通过Chianz.com获取IP地址与地区的方法
Jan 14 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
Mar 07 PHP
如何使用php实现评委评分器
Jul 31 PHP
php验证码实现代码(3种)
Sep 07 PHP
标准版Eclipse搭建PHP环境的详细步骤
Nov 18 PHP
微信推送功能实现方式图文详解
Jul 12 PHP
laravel5.6中的外键约束示例
Oct 23 PHP
PHP autoload使用方法及步骤详解
Sep 05 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调用数据库的存贮过程!
2006/10/09 PHP
php session 检测和注销
2009/03/16 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
js去除空格的12种实用方法
2013/11/08 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
create-react-app安装出错问题解决方法
2018/09/04 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
详解Vue源码中一些util函数
2019/04/24 Javascript
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
jQuery实现简单QQ聊天框
2020/08/27 jQuery
jquery实现图片放大镜效果
2020/12/23 jQuery
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
django基础之数据库操作方法(详解)
2017/05/24 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
Python类中方法getitem和getattr详解
2019/08/30 Python
python next()和iter()函数原理解析
2020/02/07 Python
Python3标准库glob文件名模式匹配的问题
2020/03/13 Python
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
软件配置管理有什么好处
2015/04/15 面试题
前台接待的工作职责
2013/11/21 职场文书
求职意向书范文
2014/04/01 职场文书
护士求职信范文
2014/05/24 职场文书
房地产经营管理专业自荐信
2014/09/02 职场文书
实践论读书笔记
2015/06/29 职场文书
学生会部长竞选稿
2015/11/19 职场文书
Node与Python 双向通信的实现代码
2021/07/16 Javascript
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python
R9700摩机记
2022/04/05 无线电
大型强子对撞机再次重启探索“第五种自然力”
2022/04/29 数码科技