PHP获取linux 的 某一刻内存使用率 内存使用率 磁盘
  
 有人指导说 可以用 php 的 exec 方法 执行 shell 命令  来获取
 
  给位大哥帮忙细说一下  或者提供其他方法  谢谢 

解决方案 »

  1.   

    这个去LINUX下proc下的文件就可以的,,像stat \meminfo 等等,挺简单的,,用exec\systerm也可以,,把如果放到数组里就可以很容易取出来了,,但是硬盘分析还是要自己算的,
      

  2.   

    <?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>"; 

    ?>
      

  3.   

    proc 文件  大哥  我刚接触linux不久 不太懂  能否说明白点  谢谢
      

  4.   

    共有3个CPU,每个CPU利用率如下:
    cpu=7.8584049196942%
    cpu0=6.9921272552773%
    cpu1=8.7385287976878%......
      

  5.   

    我是想说上面那个计算很奇葩...关于统计方法,可以用top 然后 输出文本来读取文本的数据.当然你得写个shell文件.
      

  6.   

    另外Linux下有很多优秀的统计工具都支持生成数据的。你可以用脚本来读取这些数据分析自己需要的内容。
      

  7.   

    top |col -b > top.txt