PHP中的exec输出问题

时间:2010-11-22 07:08:51

标签: php string memory exec

您好我正在尝试在PHP中输出我的内存使用。

我的代码如下所示:

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

现在的问题是文本打印

Memory: /

var_bump给了我这个:

string(73) "Mem: 3024 1968 1055 0 159 608"

这个字符串不应该是(73)而是(29)。 如果我制作自己的阵列,则完全没有问题:

$out = array('','Mem: 3024 2020 1003 0 121 708','');
string(29) "Mem: 3024 1968 1055 0 159 608"

任何人都可以给我一个解决方案或下一步调试吗?

最诚挚的问候, 艾伦

2 个答案:

答案 0 :(得分:1)

当我运行free -m时,我实际上得到大约73个字符(那里有很多空格):

Mem:          2047          0       2047          0          0          0

我认为您会发现导致空usedtotal值的原因是:explode正在Mem:2047之间的某个空格中拾取空字符串{1}}。

一种解决方案是将preg_split"/\s+/"的分隔符一起使用。

答案 1 :(得分:1)

删除空格,例如:

explode(" ", preg_replace('/\s+/', ' ', $out[1]));