0

我一直在寻找几天,我知道需要做什么,但无法弄清楚确切的代码。我知道它必须使用 preg_match 才能让我得到我想要的东西,但我遇到了麻烦。

我试图让一个脚本显示系统上使用了多少 RAM。我正在使用 php 执行。我使用命令 free -mt。在网上,我确实设法找到了这段代码,并稍作修改。

exec('free -mo', $out);
var_dump($out[1]);
list($mem, $used, $free, $shared, $buffers, $cached) = explode(" ", $out[1]);
echo "Memory: " .$used. "/" . $total;

如果我只想输出当前使用的 RAM 量,我需要做什么?

代码结束显示所有 RAM,但我需要它来显示 RAM 的总使用量。我从该代码中得到的输出是:

string(73) "Mem: 768 162 605 0 0 0" Memory: /

我希望它只是说正在使用的 RAM,所以,在这个确切的时刻它应该说 162,但它应该是每次刷新时的真实数据。

4

1 回答 1

3

上面的代码不起作用的原因是因为你在一个空间上爆炸,而值在你试图获取的值之间包含许多空格。更好的做法是使用 preg_match_all()。

试试这个:

exec('free -mo', $out);
preg_match_all('/\s+([0-9]+)/', $out[1], $matches);
list($total, $used, $free, $shared, $buffers, $cached) = $matches[1];
echo "Memory: " . $used . "/" . $total;
于 2011-05-08T14:52:43.537 回答