php 读取windows 的系统版本,硬盘,内存,网卡,数据流量等

<?php
header("Content-type: text/html; charset=utf-8");
echo "<pre>\r\n\r\n";

# 系统名称、版本和类型
$out = '';
$info = exec('wmic os get Caption,Version,OSArchitecture',$out,$status);
$osinfo_array = explode('  ',$out[1]);
$osinfo = array_values(array_filter($osinfo_array));
echo "系统名称: " . $osinfo[0] ."\r\n系统版本: " . $osinfo[2] ."\r\n系统类型: " . $osinfo[1] ."\r\n\r\n";

# 系统配置
$out = '';
$info = exec('wmic os get producttype',$out,$status);   #返回 3 是server ,返回其它的是 workstation
if($out[1] == 3) $osconfig = "Server";
else $osconfig = "Workstatio";
echo "系统配置: " . $osconfig . "\r\n\r\n";

# 已运行时长
$out = '';
$info = exec('wmic os get lastBootUpTime,LocalDateTime',$out,$status);
$datetime_array = explode('.',$out[1]);
$dt_array = explode(' ',$datetime_array[1]);
$localtime = substr($datetime_array[1],-14);
$boottime = $datetime_array[0];
$uptime = strtotime($localtime) - strtotime($datetime_array[0]);

$day=floor(($uptime)/86400);
$hour=floor(($uptime)%86400/3600);
$minute=floor(($uptime)%86400/60);
$second=floor(($uptime)%86400%60);
echo "已运行: ".$day."天".$hour."小时".$minute."分钟".$second."秒\r\n\r\n";

# 硬盘用量
$out = '';
$info = exec('wmic logicaldisk get FreeSpace,size /format:list',$out,$status);
$hd = '';
foreach($out as $vaule){
	$hd .= $vaule . ' ';;
}
$hd_array = explode('   ', trim($hd));
$key = 'CDEFGHIJKLMNOPQRSTUVWXYZ';
foreach($hd_array as $k => $v){
	$s_array = explode('Size=', $v);
	$fs_array = explode('FreeSpace=', $s_array[0]);
	$size = round(trim($s_array[1])/(1024*1024*1024), 1);
	$freespace = round(trim($fs_array[1])/(1024*1024*1024), 1);
	$drive = $key[$k];
	echo $drive . "盘,\r\n已用空间: " . ($size - $freespace) . "GB/" . $size . "GB\r\n可用空间: " . $freespace . "GB\r\n\r\n";
}

# 物理内存
$out = '';
$info = exec('wmic os get TotalVisibleMemorySize,FreePhysicalMemory',$out,$status);
# 多个空格转为一个空格
$phymem = preg_replace ( "/\s(?=\s)/","\\1",$out[1]);
$phymem_array = explode(' ',$phymem);
//print_r($phymem_array);
$freephymem = ceil($phymem_array[0]/1024);
$totalphymem = ceil($phymem_array[1]/1024);
echo "已用物理内存: ". ($totalphymem - $freephymem) ."MB/". $totalphymem . "MB\r\n空闲物理内存: " . $freephymem . "MB\r\n\r\n";

# 虚拟内存
$out = '';
$info = exec('wmic os get SizeStoredInPagingFiles,FreeSpaceInPagingFiles',$out,$status);
$pagemem = preg_replace ( "/\s(?=\s)/","\\1",$out[1]);
$pagemem_array = explode(' ',$pagemem);
$freepagemem = ceil($pagemem_array[0]/1024);
$totalpagemem = ceil($pagemem_array[1]/1024);
echo "已用虚拟内存: ". ($totalpagemem - $freepagemem) ."MB/". $totalpagemem . "MB\r\n空闲虚拟内存: " . $freepagemem . "MB\r\n\r\n";

# 网卡名称
$out = '';
$info = exec('wmic nic list brief',$out,$status);
$nic_array = explode('  ', $out[2], 2);
$nic = $nic_array[0];
echo "当前网卡名称: " . $nic . "\r\n\r\n";

# 网卡流量,最初计量为字节
$out = '';
$info = exec('netstat -e',$out,$status);
$out_array = array();
foreach ($out as $key => $value) {
    $out_array[$key] = mb_convert_encoding ($value, 'utf-8', 'GBK');
}
$net = preg_replace ( "/\s(?=\s)/","\\1",$out_array[4]);
$net_array = explode(' ',$net);
echo "当前数据流量\r\n已接收: " .round($net_array[1]/(1024*1024), 3) . "MB\r\n已发送: " . round($net_array[2]/(1024*1024), 3) . "MB\r\n\r\n";

//$out = '';
//$info = exec('wmic os get /all  /format:list',$out,$status);
//print_r($out);

# 电脑信息
//$out = '';
//$info = exec('systeminfo',$out,$status);
//print_r($out);

//$info = exec('ipconfig',$out,$status);
//print_r($out);
//$out = '';

# 执行批处理,需要绝对路径
//$info = exec('C:/Users/Administrator/Downloads/www/mem.bat',$out,$status);
//print_r($out);

//$out = '';
//$info = exec('net statistics workstation | find "Statistics since 统计数据开始于"',$out,$status);
//$boottime = preg_replace ( "/\s(?=\s)/","\\1",$out[0]);
//$boottime_array = explode(' ',$boottime,2);
//echo $boottime_array[1];

php 读取windows 的系统版本,硬盘,内存,网卡,数据流量等的更多相关文章

  1. 命令查询windows&Linux系统版本信息

    Linux 查询系统名字输入"cat /proc/version",说明正在运行的内核版本uname -rwindows 查询系统名字win+r -> winversyste ...

  2. C#获取电脑型号、系统版本、内存大小、硬盘大小、CPU信息

    摘要 有时需要获取电脑的相关信息.这时可以通过调用windows api的方式,进行获取. 方法 可以通过在powershell中 通过下面的命令进行查询,然后可以通过c#调用获取需要的信息. gwm ...

  3. Windows系统版本判定那些事儿

    v:* { } o:* { } w:* { } .shape { }p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-botto ...

  4. Windows系统版本判定那些事儿[转]

    Windows系统版本判定那些事儿 转自CSDN,原文链接,我比较不要脸, 全部给复制过来了 前言 本文并不是讨论Windows操作系统的版本来历和特点,也不是讨论为什么没有Win9,而是从程序员角度 ...

  5. Windows系统版本判定那些事儿(有图,各种情况,很清楚)

    前言 本文并不是讨论Windows操作系统的版本来历和特点,也不是讨论为什么没有Win9,而是从程序员角度讨论下Windows获取系统版本的方法和遇到的一些问题.在Win8和Win10出来之后,在获取 ...

  6. windows平台下 c++获取 系统版本 网卡 内存 CPU 硬盘 显卡信息<转>

    GetsysInfo.h: #ifndef _H_GETSYSINFO #define _H_GETSYSINFO #pragma once #include <afxtempl.h> c ...

  7. Windows 8/8.1系统下硬盘占用率100%的问题解决思路汇总

    家庭组 2.关闭虚拟内存 3.关闭Windows 8快速开机功能 4.服务进程superfetch 5.系统下软件排除 操作步骤: 1.Windows 8系统的家庭组方便多人不用存储设备就能在局域网中 ...

  8. C/C++获取Linux系统CPU和内存及硬盘使用情况

    需求分析: 不使用Top  df  free 等命令,利用C/C++获取Linux系统CPU和内存及硬盘使用情况 实现: //通过获取/proc/stat (CPU)和/proc/meminfo(内存 ...

  9. 烂泥:KVM虚拟机windows系统增加硬盘

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 前一篇文章介绍了有关linux系统添加硬盘的方法,这次我们来介绍有关windows系统添加的相关步骤. 其实linux和windows添加的硬盘的方法都 ...

随机推荐

  1. PyQuery使用

    PyQuery库是一个非常强大的网页解析库,如果你有前端开发经验的,都应该接触过jQuery,那么PyQuery就是你非常绝佳的选择,PyQuery 是 Python 仿照 jQuery 的严格实现. ...

  2. [arc076f]Exhausted? - 贪心

    题意: 给你m个椅子可以坐人,初始坐标为正整数1~m,有n个人,每个人希望坐的位置$\leq L_i$或者$\geq R_i$,可以添加若干个椅子在任意的实数位置,求最少要添加多少椅子使得所有人都有位 ...

  3. 微信小程序 刷新页面

    一 , 当前页面刷新 第一种方式: //pages 获取到当前页码数 然后执行当前页的onLoad const pages = getCurrentPages() ] perpage.onLoad() ...

  4. numpy基础篇-简单入门教程4

    np.set_printoptions(precision=3),只显示小数点后三位 np.random.seed(100) rand_arr = np.random.random([2, 2]) n ...

  5. Qt之字体文件(TTF)

    简述 TTF(TrueTypeFont)是Apple公司和Microsoft公司共同推出的字体文件格式,随着windows的流行,已经变成最常用的一种字体文件表示方式. 在一些特殊的场合,系统字符集不 ...

  6. "pom.xml" could not be activated because it does not exist.

    "pom.xml" could not be activated because it does not exist. 在sts中使用maven build,输入package然后 ...

  7. 在使用shape的同一时候,用代码改动shape的颜色属性

    Android里面常常会使用shape来定制一些View的背景 能够改动View的背景颜色.形状等属性 普通情况下.shape都是在xml文件中面写死了.今天遇到一个需求,View的形状是圆角的,可是 ...

  8. moble 设备多指手势识别 (tap , double_tap , pinch)

    function(){ elem.addEventListener('touchstart', start , false) elem.addEventListener('touchend', end ...

  9. win7 一个电脑接入多个显示器

    Display 在第一个选项display,选中某一个屏幕的时候 如果被选中的屏幕已经是main display,那么下方会显示this is your currently main display ...

  10. Android--Fragment与Activity通信

    package com.example.testfragment; import com.example.testfragment.MainFargment.BackString; import an ...