服务器是 Linux,程序是 PHP ,写一个能够显示出 CPU 的型号、核心数以及内存大小占用率,磁盘大小占用率这些相关的信息的 PHP 代码。直接上代码: date_default_timezon...
服务器是 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 文件获取系统开机运行时间,将秒数转换为天、小时和分钟的格式进行展示。