Php Exec - системная память - PullRequest
0 голосов
/ 08 мая 2011

Я искал пару дней, и я знаю, что нужно сделать, но не могу понять точный код. Я знаю, что для получения именно того, что я хочу, нужно использовать preg_match, но у меня возникли проблемы с этим.

Я пытаюсь, чтобы скрипт показывал, сколько оперативной памяти используется в системе. Я использую PHP Exec. Я использую команду free -mt. В сети мне удалось найти этот код, и я внес небольшую модификацию.

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

Что мне нужно сделать, если я просто хочу вывести объем оперативной памяти, используемой в настоящее время?

Код заканчивается отображением всей оперативной памяти, но мне нужно, чтобы он просто отображал общее количество используемой оперативной памяти. Мой вывод, который я получаю из этого кода:

string(73) "Mem: 768 162 605 0 0 0" Memory: /

Я бы хотел сказать, что используется ОЗУ, поэтому в этот точный момент должно появиться сообщение 162. Но это должны быть реальные данные при каждом обновлении.

1 Ответ

3 голосов
/ 08 мая 2011

Причина, по которой вышеприведенный код не работает, заключается в том, что вы взрываетесь в пробеле, в то время как значение содержит много пробелов между значениями, которые вы пытаетесь получить. Лучше всего использовать 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...