2012-12-25 47 views
1

嘿家伙我目前正在研究一个脚本,它显示了我的CPU负载,内存使用率和存储使用情况。我已经与管理这个脚本来获取cpu使用率:PHP获取系统信息内存使用率和存储使用率

$dat = getrusage(); 
$usertime= $dat['ru_utime.tv_usec']; 
$systemtime= $dat['ru_stime.tv_usec']; 
$finalresultcpu= ($systemtime/$usertime); 
$cpuload = $finalresultcpu * 10; 
echo $cpuload; 

所以现在我想RAM的使用和存储使用过。 Web服务器在Linux机器上运行。我知道有监视器脚本phpsysinfo,但我想用我自己的解决方案。然后我尝试shell_exec,但这并不是很有帮助。有人知道我可以如何解决这个问题与PHP或与PHP和JavaScript的组合?

+1

的phpsysinfo脚本了GitHub上:HTTPS:/ /github.com/rk4an/phpsysinfo。那里没有什么用处? – PeeHaa

+0

我看着它,但我不明白他们如何读出systemstats – Alesfatalis

+0

你真的看了看代码吗? – PeeHaa

回答

1

如果您知道此代码只能在Linux下运行,您可以使用特殊的/proc/meminfo文件获取有关系统虚拟内存子系统的信息。该文件中有这样的形式:

MemTotal:  255908 kB 
MemFree:   69936 kB 
Buffers:   15812 kB 
Cached:   115124 kB 
SwapCached:   0 kB 
Active:   92700 kB 
Inactive:  63792 kB 
... 

也就是说第一行,MemTotal: ...,包含在机器的物理内存的量,减去由内核供自己使用保留的空间。这是我了解Linux系统上可用内存的简单报告的最佳方式。您应该能够通过类似下面的代码来提取它:

<?php 
    $fh = fopen('/proc/meminfo'); 
    $mem = 0; 
    while ($line = fgets($fh)) { 
    $pieces = array(); 
    if (preg_match('^MemTotal:\s+(\d+)\skB$', $line, $pieces)) { 
     $mem = $pieces[1]; 
     break; 
    } 
    } 
    fclose($fh); 

    echo "$mem kB RAM found"; ?> 

(请注意:此代码可能需要一些调整您的环境。)

+1

我试过了你的脚本,它给了我20KB的RAM,这是否意味着当前20kb的RAM正在使用? – Alesfatalis

+0

自己感谢它的工作 – Alesfatalis