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 相关文章推荐
phpMyAdmin链接MySql错误 个人解决方案
Dec 28 PHP
优化PHP程序的方法小结
Feb 23 PHP
分享一下贝贝成长进度的php代码
Sep 14 PHP
PHP Directory 函数的详解
Mar 07 PHP
PHP中使用cURL实现Get和Post请求的方法
Mar 13 PHP
深入php数据采集的详解
Jun 02 PHP
joomla jce editor 解决上传中文名文件失败问题
Jun 09 PHP
php数据库备份还原类分享
Mar 20 PHP
typecho插件编写教程(五):核心代码
May 28 PHP
php获取汉字拼音首字母的方法
Oct 21 PHP
基于命令行执行带参数的php脚本并取得参数的方法
Jan 25 PHP
Yii视图操作之自定义分页实现方法
Jul 14 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
第1次亲密接触PHP5(1)
2006/10/09 PHP
php的debug相关函数用法示例
2016/07/11 PHP
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
2015/03/01 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
2016/05/20 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
浅谈js中子页面父页面方法 变量相互调用
2016/08/04 Javascript
javascript this详细介绍
2016/09/19 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
微信小程序 rich-text的使用方法
2017/08/04 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
微信小程序实现两边小中间大的轮播效果的示例代码
2018/12/07 Javascript
vue遍历对象中的数组取值示例
2019/11/07 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
用python读写excel的方法
2014/11/18 Python
python验证码识别实例代码
2018/02/03 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
python实现机器人卡牌
2019/10/06 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
Python 如何展开嵌套的序列
2020/08/01 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
Needle & Thread官网:英国仙女品牌
2018/01/13 全球购物
一份Java笔试题
2012/02/21 面试题
医学检验专业个人求职信范文
2013/12/04 职场文书
美容师的职业规划书
2013/12/27 职场文书
父亲八十大寿答谢词
2014/01/23 职场文书
运动会入场词100字
2014/02/06 职场文书
教师职称自我鉴定
2014/02/12 职场文书
论群众路线学习心得体会
2014/10/31 职场文书
教师节大会主持词
2015/07/06 职场文书
再见,2019我们不负使命;你好,2020我们砥砺前行
2020/01/03 职场文书
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL