2010-11-22 77 views
0

你好我正嘗試在PHP中輸出我的內存使用。在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" 

誰能給我一個解決方案或在調試這樣的下一步是什麼?

最好的問候, 艾倫

回答

1

當我運行free -m,我實際上得到大約73個字符(很多空間在那裏):

Mem:   2047   0  2047   0   0   0 

我想你會發現那是什麼導致您的空usedtotal值:explode正在拾取Mem:2047之間的空格處的空字符串。

一種解決方案是使用preg_split,分隔符爲"/\s+/"

+0

哦,謝謝。我會期待它! PHP只打印一個空格。 – 2010-11-22 07:22:31

1

刪除空格,如:

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