php怎么得到cpu 内存 网络流量的使用率(在linux下)

2024-11-19 20:26:56
推荐回答(2个)
回答1:

$str = shell_exec('more /proc/stat');
$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($pattern, $str, $out);
echo "共有".count($out[1])."个CPU,每个CPU利用率如下:
";
for($n=0;$n{
echo $out[1][$n]."=".(100*($out[1][$n]+$out[2][$n]+$out[3][$n])/($out[4][$n]+$out[5][$n]+$out[6][$n]+$out[7][$n]))."%
";
}
?>
//////////////////////////////////////////////////////////////////////
$str = shell_exec('more /proc/meminfo');
$pattern = "/(.+):\s*([0-9]+)/";
preg_match_all($pattern, $str, $out);
echo "物理内存总量:".$out[2][0]."
";
echo "已使用的内存:".$out[2][1]."
";
echo "-----------------------------------------
";
echo "内存使用率:".(100*($out[2][0]-$out[2][1])/$out[2][0])."%
";
?>
//////////////////////////////////////////////////////////////////////
$str = shell_exec('more /proc/net/dev');
$pattern = "/(eth[0-9]+):\s*([0-9]+)\s+([0-9]+)\s+([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($pattern, $str, $out);
echo "共有".count($out[1])."个网络接口,每个网络接口利用率如下:
";
for($n=0;$n{
echo $out[1][$n].":收到 ".$out[3][$n]." 个数据包,发送 ".$out[11][$n]." 个数据包
";
}
?>

回答2:

也不知道你的LINUX是否支持sar,PHP可以通过shell_exec('sar 1')获取相关信息

补充:
我在FREE BSD下喜欢使用TOP查看相关信息,对LINUX不熟悉,你可以搜索一下百度,我看到了这个文章:http://zhuheng.blogspot.com/2007/03/linux.html