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常用函数 推荐收藏保存
Feb 21 PHP
php下利用curl判断远程文件是否存在的实现代码
Oct 08 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
Nov 23 PHP
MongoDB在PHP中的常用操作小结
Feb 20 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
Mar 17 PHP
PHP生成器简单实例
May 13 PHP
PHP中foreach()用法汇总
Jul 02 PHP
再谈PHP中单双引号的区别详解
Jun 12 PHP
php实现的SSO单点登录系统接入功能示例分析
Oct 12 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
Laravel推荐使用的十个辅助函数
May 10 PHP
php反射学习之不用new方法实例化类操作示例
Jun 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
session在PHP大型web应用中的使用
2011/06/25 PHP
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
PHP连接access数据库
2015/03/27 PHP
PHP实现的mysql读写分离操作示例
2018/05/22 PHP
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
在nginx上部署vue项目(history模式)的方法
2017/12/28 Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
2019/04/02 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
js中offset,client , scroll 三大元素知识点总结
2019/09/11 Javascript
详解React的回调渲染模式
2020/09/10 Javascript
python获取网页状态码示例
2014/03/30 Python
详解Python中__str__和__repr__方法的区别
2015/04/17 Python
Python多进程分块读取超大文件的方法
2016/04/13 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
pycharm显示远程图片的实现
2019/11/04 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
Windows 平台做 Python 开发的最佳组合(推荐)
2020/07/27 Python
python super()函数的基本使用
2020/09/10 Python
发现两个有趣的CSS3动画效果
2013/08/14 HTML / CSS
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题
光电信息专业应届生求职信
2013/10/07 职场文书
汽车销售员岗位职责
2015/04/11 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
python调试工具Birdseye的使用教程
2021/05/25 Python