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 中的一些经验积累
Oct 09 PHP
PHP个人网站架设连环讲(四)
Oct 09 PHP
深入PHP中的HashTable结构详解
Jun 13 PHP
PHP函数eval()介绍和使用示例
Aug 20 PHP
学习php设计模式 php实现抽象工厂模式
Dec 07 PHP
php自定义函数实现JS的escape的方法示例
Jul 07 PHP
php微信开发之带参数二维码的使用
Aug 03 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
Oct 20 PHP
php-fpm服务启动脚本的方法
Apr 27 PHP
thinkphp3.2同时连接两个数据库的简单方法
Aug 13 PHP
PHP命名空间与自动加载机制的基础介绍
Aug 25 PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 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
php5.2时间相差8小时
2007/01/15 PHP
php foreach 使用&(与运算符)引用赋值要注意的问题
2010/02/16 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
xss文件页面内容读取(解决)
2010/11/28 Javascript
window.open以post方式将内容提交到新窗口
2012/12/26 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
2015/03/26 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
2015/09/06 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
vue 如何从单页应用改造成多页应用
2020/10/23 Javascript
python的几种开发工具介绍
2007/03/07 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
python+opencv实现动态物体识别
2018/01/09 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
Python嵌入C/C++进行开发详解
2020/06/09 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
python调用摄像头的示例代码
2020/09/28 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
党员自我剖析材料范文
2014/10/06 职场文书
教师批评与自我批评
2014/10/15 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
《搭石》教学反思
2016/02/18 职场文书
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python
JS实现页面炫酷的时钟特效示例
2022/08/14 Javascript