2011-05-08 110 views
0

我一直在寻找几天,我知道需要做什么,但无法弄清楚确切的代码。我知道它必须使用preg_match才能获得我想要的,但我遇到了麻烦。Php执行 - 系统内存

我想要一个脚本显示在系统上使用了多少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的总使用量。我输出我从代码得到的是:

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

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

+0

什么样的输出呢'免费-mo'给你? – 2011-05-08 14:28:44

+0

@Pekka - 在PHP中,我得到:string(73)“Mem:768 162 605 0 0 0”内存:从进入。 – Jacob 2011-05-08 14:31:36

+0

看起来没问题。你用上面的代码得到了什么结果? – 2011-05-08 14:35:58

回答

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; 
+0

@ Mark Pitman - 我不知道如何非常感谢你!你们提供开发服务吗?我会有兴趣聘请你参加一个项目。 – Jacob 2011-05-08 14:57:44

+0

没问题。我偶尔会这样做。随时随时给我发电子邮件。 – aminal 2011-05-08 14:59:07

+0

对不起,我的电子邮件地址是gmail dot com的marktpitman – aminal 2011-05-08 15:06:19