代码之家  ›  专栏  ›  技术社区  ›  Allan Kimmer Jensen

PHP中exec的输出问题

  •  0
  • Allan Kimmer Jensen  · 技术社区  · 14 年前

    您好,我正在尝试用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 回复  |  直到 14 年前
        1
  •  1
  •   paxdiablo    14 年前

    当我跑的时候 free -m ,我实际上得到了大约73个字符(其中有很多空格):

    Mem:          2047          0       2047          0          0          0
    

    我想你会发现这就是你空虚的原因 used total 价值观: explode 在这两个空间的某个地方捡起空字符串 Mem: 2047 .

    一种解决办法是 preg_split 用一个分隔符 "/\s+/" .

        2
  •  1
  •   ajreal    14 年前

    删除以下空格:

    explode(" ", preg_replace('/\s+/', ' ', $out[1]));