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产生随机字符串函数
Dec 06 PHP
php disk_free_space 返回目录可用空间
May 10 PHP
PHP获取MySql新增记录ID值的3种方法
Jun 24 PHP
简单说说PHP优化那些事(经验分享)
Nov 27 PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 PHP
ThinkPHP控制器详解
Jul 27 PHP
WordPress中限制非管理员用户在文章后只能评论一次
Dec 31 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
Jan 17 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
Feb 15 PHP
PHP中递归的实现实例详解
Nov 14 PHP
PHP PDOStatement::bindParam讲解
Jan 30 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
Apr 04 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
浅谈电磁辐射对健康的影响
2021/03/01 无线电
SONY SRF-40W电路分析
2021/03/02 无线电
php抓取https的内容的代码
2010/04/06 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
jquery tab标签页的制作
2010/05/10 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
node.js中的url.format方法使用说明
2014/12/10 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
jQuery AjaxUpload 上传图片代码
2016/02/02 Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
2016/02/22 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
[02:10]2018DOTA2亚洲邀请赛赛前采访-Liquid
2018/04/03 DOTA
Python利用前序和中序遍历结果重建二叉树的方法
2016/04/27 Python
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
python一键去抖音视频水印工具
2018/09/14 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
2021年的Python 时间轴和即将推出的功能详解
2020/07/27 Python
python -v 报错问题的解决方法
2020/09/15 Python
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
企划主管岗位职责
2013/12/12 职场文书
社团2014年植树节活动总结
2014/03/11 职场文书
我的老师教学反思
2014/05/01 职场文书
学校创先争优活动总结
2014/08/28 职场文书
小学教师年度个人总结
2015/02/05 职场文书
自我推荐信格式模板
2015/03/24 职场文书
确保工程质量承诺书
2015/04/29 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书