Проблемы с выводом из exec в PHP - PullRequest
0 голосов
/ 22 ноября 2010

Здравствуйте, я пытаюсь вывести память на 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 ]

1 голос
/ 22 ноября 2010

Удалить пробелы, такие как:

explode(" ", preg_replace('/\s+/', ' ', $out[1]));
1 голос
/ 22 ноября 2010

Когда я запускаю free -m, я на самом деле получаю около 73 символов (там много пробелов):

Mem:          2047          0       2047          0          0          0

Я думаю, вы поймете, что именно поэтому ваши пустые значения used и total: explode выбирает пустые строки где-то в промежутках между Mem: и 2047.

Одним из решений является использование preg_split с разделителем "/\s+/".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...