2011-05-08 1 views
0

나는 며칠 동안 검색을 수행했는데 무엇을해야하는지 알고 있지만 정확한 코드를 알아낼 수는 없습니다. 나는 그것이 내가 원하는 것을 정확히 얻기 ​​위해 preg_match를 사용해야한다는 것을 알고 있지만, 나는 그것에 문제가있다.PHP Exec - 시스템 RAM

시스템에 사용 된 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이 표시되지만 RAM의 총 사용량 만 표시하면됩니다. 내가 그 코드에서 얻을 내 출력은 다음과 같습니다

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

내가이 정확한 순간 동안 162 말 나올해야하지만, 실제 데이터의 모든해야 그냥 RAM이 사용하는 말을 좋아, 그래서 것 시간이 새로 고쳐집니다.

+0

출력의 어떤 종류가하는'자유? –

+0

@Pekka - PHP에서는 다음과 같이 표시됩니다. string (73) "Mem : 768 162 605 0 0 0"메모리 :/입력 한 것. – Jacob

+0

괜찮아 보입니다. 위의 코드로 어떤 결과가 나타 납니까? –

답변

3

위의 코드가 작동하지 않는 이유는 사용자가 얻으려는 값 사이에 공백이 많이 포함되어 있기 때문에 공간에서 폭발하기 때문입니다. 더 나은 방법은 preg_match_all()을 사용하는 것입니다.

대신이 시도 : 당신을 줄 -mo`

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

@ Pitman - 어떻게 해야할지 모르겠다. 충분히 고마워! 개발 서비스를 제공합니까? 나는 당신을 프로젝트에 고용하는 데 관심이있을 것이다. – Jacob

+0

문제 없습니다. 나는 때때로한다. 언제든지 저에게 이메일을 보내 주시기 바랍니다. – aminal

+0

죄송합니다, 제 이메일은 Gmail의 dottpitman입니다. com – aminal