2014-01-30 53 views
0

你好,我現在用的是下面的代碼,試圖獲取Java的內存使用情況在PHP(在Linux上)獲取內存使用PHP

返回的PID作品腳本的一部分,但代碼即可獲得它的內存使用似乎不起作用。

這裏是我的代碼:

$PID = exec('ps -eo pid,comm | grep \'java$\' | awk \'{print $1}\' | head -1'); 
$stats = explode("\n", shell_exec('pmap $(pgrep java) | grep \'total\\|\\:\'')); 

for ($i = 0; $i < count($stats); $i += 2) { 
    if (strpos($stats[$i], "$PID") === 0) { 
     preg_match('/\d+/', $stats[$i+1], $preRes); 
     $res = $preRes[0]; 
    } 
} 

echo $res; 

有人能看到我在做什麼錯?它每次返回0作爲內存使用量。

+0

這是不必要在這裏周圍使用'$ PID'雙引號來獲得內存使用:'strpos($統計[$ i],「$ PID「)' – crush

+1

如何簡化代碼以便調試?不要做'func(func(func(....))''嵌套。將每個階段的輸出/返回值捕獲到單獨的單獨代碼塊中,以便您可以瞭解事情在哪個階段中斷。請記住:編寫代碼很困難,調試更困難。如果您編寫的代碼是寫作能力的限制,則根據定義,您無法對其進行調試。 –

+0

向我們展示您的shell命令的輸出示例。 – crush

回答

0

我能夠通過簡化我的代碼如下

$memory = exec('ps -eo rss,comm | grep \'java$\' | awk \'{print $1}\' | head -1'); 
$memory = $memory/1024; 
echo $memory;