<?php
class ServerPerformanceMonitor {
// 获取CPU使用率
public function getCpuUsage() {
$load = sys_getloadavg();
return $load[0]; // 返回1分钟平均负载
}
// 获取内存使用情况
public function getMemoryUsage() {
$memInfo = file_get_contents("/proc/meminfo");
$memInfo = explode("\n", $memInfo);
$memTotal = (int) filter_var($memInfo[0], FILTER_SANITIZE_NUMBER_INT);
$memFree = (int) filter_var($memInfo[1], FILTER_SANITIZE_NUMBER_INT);
$memUsed = $memTotal - $memFree;
$memUsagePercentage = ($memUsed / $memTotal) * 100;
return round($memUsagePercentage, 2); // 返回内存使用百分比
}
// 获取磁盘使用情况
public function getDiskUsage($path = '/') {
$diskTotal = disk_total_space($path);
$diskFree = disk_free_space($path);
$diskUsed = $diskTotal - $diskFree;
$diskUsagePercentage = ($diskUsed / $diskTotal) * 100;
return round($diskUsagePercentage, 2); // 返回磁盘使用百分比
}
// 获取网络流量数据
public function getNetworkTraffic($interface = 'eth0') {
$netFile = "/proc/net/dev";
$netData = file($netFile);
foreach ($netData as $line) {
if (strpos($line, $interface) !== false) {
$lineData = preg_split('/\s+/', trim($line));
$receivedBytes = $lineData[1];
$transmittedBytes = $lineData[9];
return [
'received_bytes' => $receivedBytes,
'transmitted_bytes' => $transmittedBytes
];
}
}
return null;
}
}
// 示例使用
$monitor = new ServerPerformanceMonitor();
echo "CPU Usage: " . $monitor->getCpuUsage() . "%\n";
echo "Memory Usage: " . $monitor->getMemoryUsage() . "%\n";
echo "Disk Usage: " . $monitor->getDiskUsage() . "%\n";
$networkTraffic = $monitor->getNetworkTraffic();
echo "Network Traffic - Received: " . $networkTraffic['received_bytes'] . " bytes, Transmitted: " . $networkTraffic['transmitted_bytes'] . " bytes\n";
这个PHP代码片段实现了一个简单的服务器性能与资源使用情况的实时监控工具。它可以帮助开发者在开发和运维过程中监控服务器的健康状态,确保系统的高效运行。具体功能如下:
- CPU使用率监控:通过读取系统负载平均值来获取CPU的使用率,便于了解服务器的处理器负载情况。
- 内存使用情况监控:读取系统内存信息,计算出内存的使用百分比,帮助识别是否存在内存瓶颈。
- 磁盘使用情况监控:获取指定路径的磁盘使用情况,包括磁盘的总空间、可用空间以及使用百分比。
- 网络流量监控:通过读取网络接口的信息,获取接收和发送的数据字节数,可以帮助了解服务器的网络流量。
该工具适用于需要实时了解服务器性能的场景,帮助开发者或系统管理员及时发现潜在问题并进行调整。