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实现像JSP,ASP里Application那样的全局变量
Jan 12 PHP
PHP 变量类型的强制转换
Oct 23 PHP
php实现图片转换成ASCII码的方法
Apr 03 PHP
PHP时间和日期函数详解
May 08 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
Oct 09 PHP
浅析Yii2 gridview实现批量删除教程
Apr 22 PHP
php实现文件上传及头像预览功能
Jan 15 PHP
Yii2中多表关联查询hasOne hasMany的方法
Feb 15 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
Jun 22 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 PHP
php模拟post提交请求调用接口示例解析
Aug 07 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 Undefined index的问题
2009/06/01 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
php实现数据库的增删改查
2017/02/26 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
用jquery生成二级菜单的实例代码
2013/06/24 Javascript
如何让DIV可编辑、可拖动示例代码
2013/09/18 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
使用jQuery获取data-的自定义属性
2015/11/10 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
深入理解jQuery之事件移除
2016/06/02 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
详解React项目中碰到的IE问题
2019/03/14 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
Python实现partial改变方法默认参数
2014/08/18 Python
使用Django的模版来配合字符串翻译工作
2015/07/27 Python
Python探索之Metaclass初步了解
2017/10/28 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
Golang GBK转UTF-8的例子
2019/08/26 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
Java的接口和C++的虚类的相同和不同处
2014/03/27 面试题
房地产管理毕业生自荐信
2013/11/04 职场文书
电子信息专业学生自荐信
2013/11/09 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
父亲节寄语大全
2015/02/27 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
2016年公司新年寄语
2015/08/17 职场文书
SQL Server2019数据库之简单子查询的具有方法
2021/04/27 SQL Server
Python学习之os包使用教程详解
2022/03/21 Python
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技