如何在PHP中获取系统信息?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在PHP中获取系统信息?相关的知识,希望对你有一定的参考价值。
我想用php获取系统内存使用情况(以及硬盘空间信息)。有没有办法不使用system
调用调用命令?
注意:我不是在寻找脚本内存使用情况,而是在寻找系统内存使用情况。
答案
在Linux上,您可以阅读/proc/meminfo
以获取有关总系统内存和可用系统内存的信息(只需cat /proc/meminfo
- 它是一个您可以轻松解析的简单文本文件)。
我不确定你是否可以从procfs获取文件系统信息,试着查看/proc/sys/fs
获取有趣的信息。
另一答案
您正在寻找phpSysInfo:
phpSysInfo是一个PHP脚本,显示有关正在访问的主机的信息。它将显示如下内容:
- 正常运行时间
- 中央处理器
- 记忆
- SCSI,IDE,PCI
- 以太网络
- 软盘
- 视频信息
另一答案
这是以JSON格式推出有关cpu,ram,hdd和网络的所有内容。 (适合用jQuery处理它)
<?php
//cpu stat
$prevVal = shell_exec("cat /proc/stat");
$prevArr = explode(' ',trim($prevVal));
$prevTotal = $prevArr[2] + $prevArr[3] + $prevArr[4] + $prevArr[5];
$prevIdle = $prevArr[5];
usleep(0.15 * 1000000);
$val = shell_exec("cat /proc/stat");
$arr = explode(' ', trim($val));
$total = $arr[2] + $arr[3] + $arr[4] + $arr[5];
$idle = $arr[5];
$intervalTotal = intval($total - $prevTotal);
$stat['cpu'] = intval(100 * (($intervalTotal - ($idle - $prevIdle)) / $intervalTotal));
$cpu_result = shell_exec("cat /proc/cpuinfo | grep model name");
$stat['cpu_model'] = strstr($cpu_result, "
", true);
$stat['cpu_model'] = str_replace("model name : ", "", $stat['cpu_model']);
//memory stat
$stat['mem_percent'] = round(shell_exec("free | grep Mem | awk '{print $3/$2 * 100.0}'"), 2);
$mem_result = shell_exec("cat /proc/meminfo | grep MemTotal");
$stat['mem_total'] = round(preg_replace("#[^0-9]+(?:.[0-9]*)?#", "", $mem_result) / 1024 / 1024, 3);
$mem_result = shell_exec("cat /proc/meminfo | grep MemFree");
$stat['mem_free'] = round(preg_replace("#[^0-9]+(?:.[0-9]*)?#", "", $mem_result) / 1024 / 1024, 3);
$stat['mem_used'] = $stat['mem_total'] - $stat['mem_free'];
//hdd stat
$stat['hdd_free'] = round(disk_free_space("/") / 1024 / 1024 / 1024, 2);
$stat['hdd_total'] = round(disk_total_space("/") / 1024 / 1024/ 1024, 2);
$stat['hdd_used'] = $stat['hdd_total'] - $stat['hdd_free'];
$stat['hdd_percent'] = round(sprintf('%.2f',($stat['hdd_used'] / $stat['hdd_total']) * 100), 2);
//network stat
$stat['network_rx'] = round(trim(file_get_contents("/sys/class/net/eth0/statistics/rx_bytes")) / 1024/ 1024/ 1024, 2);
$stat['network_tx'] = round(trim(file_get_contents("/sys/class/net/eth0/statistics/tx_bytes")) / 1024/ 1024/ 1024, 2);
//output headers
header('Content-type: text/json');
header('Content-type: application/json');
//output data by json
echo
"{"cpu": " . $stat['cpu'] . ", "cpu_model": "" . $stat['cpu_model'] . """ . //cpu stats
", "mem_percent": " . $stat['mem_percent'] . ", "mem_total":" . $stat['mem_total'] . ", "mem_used":" . $stat['mem_used'] . ", "mem_free":" . $stat['mem_free'] . //mem stats
", "hdd_free":" . $stat['hdd_free'] . ", "hdd_total":" . $stat['hdd_total'] . ", "hdd_used":" . $stat['hdd_used'] . ", "hdd_percent":" . $stat['hdd_percent'] . ", " . //hdd stats
""network_rx":" . $stat['network_rx'] . ", "network_tx":" . $stat['network_tx'] . //network stats
"}";
?>
另一答案
Linfo提供最重要的系统状态信息。你只需要一个安装了/proc
和/sys
的系统(我估计大多数类似unix的系统)。
来自网站:显示的信息
- CPU类型
- RAM使用情况
- PCI / USB设备
- 硬盘驱动器
- 文件系统安装
- 网络设备
- 通过hddtemp / mbmon的时间/电压
- 软件raid数组(通过mdadm或gmirror)
- 系统负载/进程数,线程数
- Linux发行版,如果可能的话
以上是关于如何在PHP中获取系统信息?的主要内容,如果未能解决你的问题,请参考以下文章
python BrickstorOS片段用于获取各种文件系统信息。