欢迎您来到,李雷博客 | PHP博客        登录  |  注册

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 文件获取系统开机运行时间,将秒数转换为天、小时和分钟的格式进行展示。

推荐的文章
# 发表我的评论
  /     /  
# 最近评论
暂时还没有评论,要不要说点什么?
  Ads by Google
  联系博主
Hello,本博客系统采用PHP和MySql开发,程序开发完全是因为个人爱好,是自己纯手写PHP源代码,未采用任何PHP框架!
QQ:858353007   微信号:lileihot123
网站地图
会员服务
关于我们
QQ:858353007
 
广告服务
加我微信
移动端访问
 
 
Copyright © 2014- 2025 www.mdaima.com All Rights Reserved.
李雷博客,专注PHP经验、PHP教程及PHP源代码开源下载分享的PHP博客!   ICP备案号:京ICP备10202169号-4