2010-11-22 7 views
0

こんにちは私はPHPで私のメモリ使用を出力しようとしています。PHPのexecの出力に関する問題

私のコードは次のようになります。

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の間の空白文字列のどこかで空の文字列を取り上げています。

"/\s+/"のセパレータを使用してpreg_splitを使用する方法があります。

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

ああ感謝: –

1

は、次のようなスペースを削除します。私はそれを調べます! PHPは1つのスペースしか印刷しません。
関連する問題