有什么好的方法php和linux通讯上,得到他的使用率。
或者说php有什么api能做到。有的话, 能否给实例代码或可行性建议。
急用啊。。。。
不支持sar ,就是想得到linux下的cpu和内存,应用程序的使用率 得到以后,用php的图表示出来
<?php
$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利用率如下:<br>";
for($n=0;$n<count($out[1]);$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]))."%<br>";
}
?>
//////////////////////////////////////////////////////////////////////
<?php
$str = shell_exec('more /proc/meminfo');
$pattern = "/(.+):\s*([0-9]+)/";
preg_match_all($pattern, $str, $out);
echo "物理内存总量:".$out[2][0]."<br>";
echo "已使用的内存:".$out[2][1]."<br>";
echo "-----------------------------------------<br>";
echo "内存使用率:".(100*($out[2][0]-$out[2][1])/$out[2][0])."%<br>";
?>
//////////////////////////////////////////////////////////////////////
<?php
$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])."个网络接口,每个网络接口利用率如下:<br>";
for($n=0;$n<count($out[1]);$n++)
{
echo $out[1][$n].":收到 ".$out[3][$n]." 个数据包,发送 ".$out[11][$n]." 个数据包<br>";
}
?>
$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利用率如下:<br>";
for($n=0;$n<count($out[1]);$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]))."%<br>";
}
?>
//////////////////////////////////////////////////////////////////////
<?php
$str = shell_exec('more /proc/meminfo');
$pattern = "/(.+):\s*([0-9]+)/";
preg_match_all($pattern, $str, $out);
echo "物理内存总量:".$out[2][0]."<br>";
echo "已使用的内存:".$out[2][1]."<br>";
echo "-----------------------------------------<br>";
echo "内存使用率:".(100*($out[2][0]-$out[2][1])/$out[2][0])."%<br>";
?>
//////////////////////////////////////////////////////////////////////
<?php
$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])."个网络接口,每个网络接口利用率如下:<br>";
for($n=0;$n<count($out[1]);$n++)
{
echo $out[1][$n].":收到 ".$out[3][$n]." 个数据包,发送 ".$out[11][$n]." 个数据包<br>";
}
?>
温馨提示:答案为网友推荐,仅供参考
第1个回答 2009-04-04
也不知道你的LINUX是否支持sar,PHP可以通过shell_exec('sar 1')获取相关信息
补充:
我在FREE BSD下喜欢使用TOP查看相关信息,对LINUX不熟悉,你可以搜索一下百度,我看到了这个文章:
补充:
我在FREE BSD下喜欢使用TOP查看相关信息,对LINUX不熟悉,你可以搜索一下百度,我看到了这个文章: