【问题标题】:Getting memory usage with php使用 php 获取内存使用情况
【发布时间】:2014-01-30 18:23:57
【问题描述】:

您好,我正在使用下面的代码来尝试获取 PHP 中 java 的内存使用情况(在 linux 上)

返回 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 作为内存使用量。

【问题讨论】:

  • 这里不需要在$PID 周围使用双引号:strpos($stats[$i], "$PID")
  • 如何简化代码以便调试?不要做func(func(func(....))) 嵌套。将每个阶段的输出/返回值捕获到单独的单独代码块中,这样您就可以看到在哪个阶段发生了问题。记住:写代码很难,调试更难。如果您编写的代码超出了您的编写能力,那么根据定义,您将无法对其进行调试。
  • 向我们展示您的 shell 命令的示例输出。
  • 你能不能稍微简化一下?例如,ps auxw | grep \'java$\' | awk '{print $2,$5,$6}' 每行输出PID Virtual-Memory Physical-Memory

标签: java php linux memory ram


【解决方案1】:

我可以通过将我的代码简化为以下来获得内存使用情况

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2011-03-08
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    相关资源
    最近更新 更多