我已经搜索了几天,我知道需要做什么,但无法弄清楚确切的代码。我知道它必须使用preg_match才能让我得到我想要的东西,但我遇到了麻烦。
我正在尝试让脚本显示系统上使用了多少RAM。我正在使用php exec。我使用命令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,但每次刷新时都应该是真实的数据。
答案 0 :(得分: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;