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 中dirname(_file_)讲解
Mar 18 PHP
memcached 和 mysql 主从环境下php开发代码详解
May 16 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
Jun 07 PHP
微信扫描二维码登录网站代码示例
Dec 30 PHP
ThinkPHP让分页保持搜索状态的方法
Jul 02 PHP
[原创]php实现子字符串位置相互对调互换的方法
Jun 02 PHP
Yii2.0表关联查询实例分析
Jul 18 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
Oct 14 PHP
浅谈php使用curl模拟多线程发送请求
Mar 08 PHP
php和js实现根据子网掩码和ip计算子网功能示例
Nov 09 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
PHP中多字节字符串操作实例详解
Aug 23 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你的验证码安全码?
2007/01/02 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
js data日期初始化的5种方法
2013/12/29 Javascript
js带点自动图片轮播幻灯片特效代码分享
2015/09/07 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
jQuery解析XML 详解及方法总结
2016/09/28 Javascript
Bootstrap基本组件学习笔记之面板(14)
2016/12/08 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
js单页hash路由原理与应用实战详解
2017/08/14 Javascript
微信小程序使用wxParse解析html的方法示例
2019/01/17 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
vue将后台数据时间戳转换成日期格式
2019/07/31 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
python实现忽略大小写对字符串列表排序的方法
2014/09/25 Python
详解Python中的循环语句的用法
2015/04/09 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
python交易记录链的实现过程详解
2019/07/03 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
Aerosoles爱柔仕官网:美国舒软女鞋品牌
2017/07/17 全球购物
工程安全生产协议书
2014/11/21 职场文书
小区环境卫生倡议书
2015/04/29 职场文书
驳回起诉裁定书
2015/05/19 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
2016年教育局“我们的节日——端午节”主题活动总结
2016/04/01 职场文书
golang 生成对应的数据表struct定义操作
2021/04/28 Golang
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang