2011-05-08 109 views
0

我一直在尋找幾天,我知道需要做什麼,但無法弄清楚確切的代碼。我知道它必須使用preg_match才能獲得我想要的,但我遇到了麻煩。Php執行 - 系統內存

我想要一個腳本顯示在系統上使用了多少RAM。我使用php exec。我使用free -mt命令。在線上,我設法找到了這些代碼,並對其進行了一些修改。

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

什麼,我需要做的,如果我只是想輸出當前使用的內存量?

顯示所有RAM的代碼結束,但我需要它只顯示RAM的總使用量。我輸出我從代碼得到的是:

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

我想它只是說正在使用的RAM,所以,它應該走出這個確切的時刻時說:162,但它應該是真實的數據每它刷新的時間。

+0

什麼樣的輸出呢'免費-mo'給你? – 2011-05-08 14:28:44

+0

@Pekka - 在PHP中,我得到:string(73)「Mem:768 162 605 0 0 0」內存:從進入。 – Jacob 2011-05-08 14:31:36

+0

看起來沒問題。你用上面的代碼得到了什麼結果? – 2011-05-08 14:35:58

回答

3

上述代碼無法正常工作的原因是因爲您在空間上爆炸,而該值在您嘗試獲取的值之間包含許多空格。更好的做法是使用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; 
+0

@ Mark Pitman - 我不知道如何非常感謝你!你們提供開發服務嗎?我會有興趣聘請你參加一個項目。 – Jacob 2011-05-08 14:57:44

+0

沒問題。我偶爾會這樣做。隨時隨時給我發電子郵件。 – aminal 2011-05-08 14:59:07

+0

對不起,我的電子郵件地址是gmail dot com的marktpitman – aminal 2011-05-08 15:06:19