1

嘿伙计们,我目前正在编写一个小脚本,它显示了 cpu 负载、ram 使用情况和存储使用情况。我已经设法通过这个小脚本获得了 cpu 使用率:

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

所以现在我也想获得内存使用和存储使用。Web 服务器在 Linux 机器上运行。我知道有监控脚本 phpsysinfo,但我想使用我自己的解决方案。然后我尝试shell_exec了,但这并没有真正的帮助。有人知道我如何用 php 或 php 和 javascript 的组合来解决这个问题吗?

4

1 回答 1

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: ...,包含机器中物理 RAM 的数量,减去内核为自己使用而保留的空间。这是我所知道的获得 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"; ?>

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

于 2012-12-25T15:40:47.760 回答