LINUX下用PHP获取CPU型号、内存占用、硬盘占用等信息代码
更新:2025-02-14 11:42:58
人气:235
来源:本站原创
A+
服务器是 Linux,程序是 PHP ,写一个能够显示出 CPU 的型号、核心数以及内存大小占用率,磁盘大小占用率这些相关的信息的 PHP 代码。
直接上代码:
<?
date_default_timezone_set ("PRC");//设置时区
set_time_limit(0);
ini_set('memory_limit','128M');
session_start();//开启session功能,此前不能有任何输出
header("Cache-control:private"); //开启网页表单缓存
error_reporting(0);
// 获取CPU信息
$cpuInfo = file_get_contents('/proc/cpuinfo');
// 获取CPU型号
preg_match('/model name\s+:\s+(.*)/i', $cpuInfo, $cpuModelMatch);
$cpuModel = isset($cpuModelMatch[1])? $cpuModelMatch[1] : '未知';
// 获取CPU颗数
$physicalIds = [];
$lines = explode("\n", $cpuInfo);
foreach ($lines as $line) {
if (strpos($line, 'physical id') === 0) {
$parts = explode(':', $line);
$physicalId = trim($parts[1]);
if (!in_array($physicalId, $physicalIds)) {
$physicalIds[] = $physicalId;
}
}
}
$cpuCount = count($physicalIds);
// 获取CPU内核数量
preg_match_all('/cpu cores\s+:\s+(\d+)/i', $cpuInfo, $cpuCoreCountMatches);
$totalCoreCount = 0;
foreach ($cpuCoreCountMatches[1] as $coreCount) {
$totalCoreCount += (int)$coreCount;
}
// 获取CPU频率
preg_match('/cpu MHz\s+:\s+(.*)/i', $cpuInfo, $cpuFreqMatch);
$cpuFrequency = isset($cpuFreqMatch[1])? round((float)$cpuFreqMatch[1] / 1000, 2). 'GHz' : '未知';
// 获取内存信息
$memInfo = file_get_contents('/proc/meminfo');
preg_match('/MemTotal:\s+(\d+)\s+kB/i', $memInfo, $memTotalMatch);
preg_match('/MemFree:\s+(\d+)\s+kB/i', $memInfo, $memFreeMatch);
$memTotal = isset($memTotalMatch[1])? $memTotalMatch[1] : 0;
$memFree = isset($memFreeMatch[1])? $memFreeMatch[1] : 0;
$memUsage = ($memTotal - $memFree) / $memTotal * 100;
// 获取磁盘信息
$diskInfo = disk_total_space('/');
$diskFree = disk_free_space('/');
$diskUsage = ($diskInfo - $diskFree) / $diskInfo * 100;
// 获取操作系统版本型号
$osRelease = file_get_contents('/etc/os-release');
preg_match('/PRETTY_NAME="(.*)"/', $osRelease, $osMatch);
$osVersion = isset($osMatch[1])? $osMatch[1] : '未知';
// 获取开机运行时间
$uptimeInfo = file_get_contents('/proc/uptime');
$uptimeSeconds = explode(' ', $uptimeInfo)[0];
$days = floor($uptimeSeconds / 86400);
$hours = floor(($uptimeSeconds % 86400) / 3600);
$minutes = floor(($uptimeSeconds % 3600) / 60);
$uptime = sprintf('%d 天, %d 小时, %d 分钟', $days, $hours, $minutes);
echo "CPU 型号: $cpuModel<br>";
echo "CPU 颗数: $cpuCount<br>";
echo "CPU 内核数量: $totalCoreCount<br>";
echo "CPU 频率: $cpuFrequency<br>";
echo "内存总大小: ". round($memTotal / 1024, 2). " MB<br>";
echo "内存占用率: ". round($memUsage, 2). "%<br>";
echo "磁盘总大小: ". round($diskInfo / (1024 * 1024 * 1024), 2). " GB<br>";
echo "磁盘占用率: ". round($diskUsage, 2). "%<br>";
echo "操作系统版本型号: $osVersion<br>";
echo "开机运行时间: $uptime<br>";
?>
上述代码通过读取 /etc/os-release 文件获取操作系统版本型号,利用 PRETTY_NAME 字段来提取相关信息。通过读取 /proc/uptime 文件获取系统开机运行时间,将秒数转换为天、小时和分钟的格式进行展示。
推荐的文章
随手记
- ● 自制(IP或域名)可信任的SSL证书,适用360、chrome等浏览器
- ● windows系统下php无法使用curl怎么办?
- ● 绿联UGREENKVM切换器(分屏器)快捷键丢失解决办法
- ● 统信UOS开机指定网址全屏启动自带浏览器以及屏蔽ALT+F4关闭
- ● xshellSSH连接Linux服务器防止超时退出
- ● php8开启OpenSSL扩展库报错disabledinstallext
- ● 统信系统linux安装php时的报错libxml-2.0>=2.7.6
- ● tidb关闭sql_mode=ONLY_FULL_GROUP_BY模式
- ● windows10如何开机自动运行bat文件
- ● Win10Mysql8初始密码丢失,初始化又不显示密码
PHP经验分享
- ● PHP批量对TCP服务端指定多个IP非阻塞检查在线状态
- ● python实现TCP服务端持续接收关机、重启指令并输出结果【系列三】
- ● PHP给TCP服务端发送指令【系列二】
- ● PHP判断TCP服务端是否在线【系列一】
- ● PHP判断远程文件是否存在
- ● PHP代码用UDP方式远程唤醒电脑让计算机开机
- ● apache下php生成验证码图片不能显示
- ● PHP使用AES加密解密示例(无偏移)
- ● Pluginmysql_native_passwordreported:''mysql_native_password'isdeprecate问题
- ● PHP实现计算CRC-16/MODBUS校验位