hejunjie / hardware-monitor
一个轻量级的 PHP 包,用于获取和监控系统硬件参数。支持获取 CPU 型号和性能信息、内存使用情况、硬盘信息及网络流量数据。通过执行系统命令并使用正则表达式解析输出结果,实时获取硬件性能数据。适用于 PHP8,支持加入原有项目定时任务多次调用以实现硬件监控,帮助开发者监控系统资源使用情况,优化系统性能。
v1.0.1
2024-12-21 07:02 UTC
Requires
- php: ^8.0
README
这个 Composer 包提供了一种简单而高效的方式来获取硬件信息,如 CPU 详情、内存使用情况、磁盘空间和网络流量,支持 Linux 和 macOS 系统。它封装了系统命令来获取这些数据,并以结构化的格式返回。
Windows 系统测试中,近期更新
功能
- 获取 CPU 模型、核心数和逻辑核心数。
- 获取系统内存使用情况(总内存、已用内存、空闲内存、缓存内存、缓冲区内存)。
- 获取详细的磁盘信息,包括容量、已用空间和挂载点。
- 获取实时的网络流量统计。
- 支持 Linux 和 macOS 操作系统。
系统要求
- PHP 8.0 或更高版本
- 支持 Linux 或 macOS 操作系统
- 需要使用 Composer 进行依赖管理
安装
你可以通过 Composer 安装这个包。在项目目录下运行以下命令:
composer require hejunjie/hardware-monitor
使用方法
获取 CPU 信息
要获取 CPU 信息(如模型、核心数、逻辑核心数):
use Hejunjie\HardwareMonitor\CPUInfo; $cpuInfo = CPUInfo::getCpuInfo(); echo 'CPU 模型: ' . $cpuInfo['model']; echo '物理核心数: ' . $cpuInfo['cores']; echo '逻辑核心数: ' . $cpuInfo['logical_cores']; echo '每个插槽的核心数: ' . $cpuInfo['cores_per_socket'];
获取 CPU 使用情况
获取 CPU 使用情况:
use Hejunjie\HardwareMonitor\CPUInfo; $cpuUsage = CPUInfo::getCpuUsage(); echo '用户空间占用 CPU 时间的百分比: ' . $cpuUsage['user']; echo '内核空间占用 CPU 时间的百分比: ' . $cpuUsage['sys']; echo '空闲时间的百分比: ' . $cpuUsage['idle']; echo '等待 I/O 操作的时间百分比: ' . $cpuUsage['wait'];
获取内存使用情况
要获取内存使用情况:
use Hejunjie\HardwareMonitor\MemoryInfo; $memoryInfo = MemoryInfo::getMemoryUsage(); echo '总内存: ' . $memoryInfo['total'] . ' MB'; echo '已用内存: ' . $memoryInfo['used'] . ' MB'; echo '空闲内存: ' . $memoryInfo['free'] . ' MB'; echo '缓存内存: ' . $memoryInfo['cached'] . ' MB'; echo '缓冲区内存: ' . $memoryInfo['buffers'] . ' MB';
获取磁盘信息
要获取磁盘信息(如设备名称、大小、空闲空间):
use Hejunjie\HardwareMonitor\DiskInfo; $diskInfo = DiskInfo::getDiskInfo(); foreach ($diskInfo as $disk) { echo '硬盘设备名称: ' . $disk['device']; echo '硬盘型号: ' . $disk['model']; echo '大小: ' . $disk['size'] . ' MB'; echo '已用: ' . $disk['used'] . ' MB'; echo '空闲: ' . $disk['free'] . ' MB'; echo '占用百分比: ' . $disk['capacity']; echo '文件系统类型: ' . $disk['filesystem']; echo '挂载点: ' . $disk['mountpoint']; }
获取网络流量
要获取网络流量统计(如流入和流出数据):
use Hejunjie\HardwareMonitor\NetworkTraffic; $networkTraffic = NetworkTraffic::getNetworkTraffic(); foreach ($networkTraffic as $network) { echo '网络接口: ' . $network['name']; echo '流入流量: ' . $network['in'] . ' MB'; echo '流出流量: ' . $network['out'] . ' MB'; }