【问题标题】:Php Exec - System RAMPhp Exec - 系统内存
【发布时间】:2011-05-08 14:26:44
【问题描述】:

我已经搜索了几天,我知道需要做什么,但无法弄清楚确切的代码。我知道它必须使用 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,但它应该是每次刷新时的真实数据。

【问题讨论】:

  • free -mo给你什么样的输出?
  • @Pekka - 在 PHP 中,我得到:string(73) "Mem: 768 162 605 0 0 0" Memory: / from enter that。
  • 看起来不错。上面的代码你得到了什么结果?
  • @Pekka - 我没有返回那些细节,而是寻找一个要输出的数字,即已使用的 RAM 量。我该怎么做?
  • @Jacob 您显示的代码应该已经做到了。 $used 应该包含已用内存量。如果你运行它会发生什么?

标签: php exec ram


【解决方案1】:

上面的代码不起作用的原因是因为你在一个空间上爆炸,而值在你试图获取的值之间包含许多空格。更好的做法是使用 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;

【讨论】:

  • @Mark Pitman - 我不知道该如何感谢你!你们提供开发服务吗?我有兴趣为一个项目雇用你。
  • 没问题。我偶尔会。随时给我发电子邮件。
猜你喜欢
  • 1970-01-01
  • 2019-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
相关资源
最近更新 更多