1、CPU利用率
<?php
// more proc/stat 该文件记录了自系统启动以来的所有内核的相关数据
//shell_exec() 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。
$str = shell_exec('more /proc/stat');
//返回数据 cpu0 168465523 0 3935595 18 0 0 100205 0 0 0
//正则表达式:
//(cpu[0-9]?)[\s] 筛选出cpu0和空格
//([0-9]+)[\s] 筛选出user时间 168465523和空格 单位(jiffies) 用户态的CPU时间 不包含 nice值为负进程。1jiffies=0.01秒
//([0-9]+)[\s] 筛选出nice时间 0和空格 单位(jiffies) nice值为负的进程所占用的CPU时间
//([0-9]+)[\s] 帅选出system时间 3935595和空格 单位 (jiffies) 核心时间
//([0-9]+)[\s] 帅选出idle时间 18和空格 单位 (jiffies) 除硬盘IO等待时间以外其它等待时间
//([0-9]+)[\s] 帅选出iowait时间 0和空格 单位 (jiffies) 硬盘IO等待时间
//([0-9]+)[\s] 帅选出irq时间 0和空格 单位 (jiffies) 硬中断时间
//([0-9]+)[\s] 帅选出softirq时间 100205 单位 (jiffies) 软中断时间
$pattern = "/(cpu[0-9]?)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)/";
//preg_match_all 帅选出匹配项
preg_match_all($pattern, $str, $out);
//计算cpu个数出去CPU总
echo "共有" . (count($out[1]) - 1) . "个CPU,每个CPU利用率如下:<br>";
for ($n = 1; $n < count($out[1]); $n++) {
echo $out[1][$n] . "=" . (100 * ($out[2][$n] + $out[3][$n]) / ($out[2][$n] + $out[3][$n] + $out[4][$n] + $out[5][$n] + $out[6][$n] + $out[7][$n])) . "%<br>";
}
linux 下输入more /proc/stat命令:
root@am335x:~# more /proc/stat
cpu 168465523 0 3935595 18 0 0 100205 0 0 0
cpu0 168465523 0 3935595 18 0 0 100205 0 0 0
intr 269560070 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88516691 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 173499956 0 32 0 36 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6986679 556673 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 31944228
btime 1607164264
processes 34786
procs_running 2
procs_blocked 0
softirq 284533728 0 172501338 345003 7704291 0 0 1 0 0 103983095
2.内存利用率
<?php
$str = shell_exec('more /proc/meminfo');
$pattern = "/(.+):\s*([0-9]+)/";
preg_match_all($pattern, $str, $out);
echo (100 * ($out[2][0] - $out[2][1]) / $out[2][0]);
linux 下命令 more /proc/meminfo 信息
root@am335x:~# more /proc/meminfo
MemTotal: 252148 kB
MemFree: 52300 kB
Buffers: 0 kB
Cached: 125532 kB
SwapCached: 0 kB
Active: 95324 kB
Inactive: 88756 kB
Active(anon): 65888 kB
Inactive(anon): 128 kB
Active(file): 29436 kB
Inactive(file): 88628 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 8 kB
Writeback: 0 kB
AnonPages: 58576 kB
Mapped: 3516 kB
Shmem: 7468 kB
Slab: 11132 kB
SReclaimable: 5732 kB
SUnreclaim: 5400 kB
KernelStack: 488 kB
PageTables: 440 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 126072 kB
Committed_AS: 81828 kB
VmallocTotal: 761856 kB
VmallocUsed: 11836 kB
VmallocChunk: 670716 kB
参考文件
php如何获得CPU,内存是使用率_php使用shell_exc函数获取cpu使用率_wjp@001的博客-CSDN博客