2010-11-22 12 views
0

Merhaba Bellek kullanımımı PHP'de denemeye çalışıyorum.PHP'de çalıştırılan çıktı ile ilgili sorunlar

Benim kod şöyle görünür:

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

Şimdi problem metin baskılar

Memory:/

Ve var_bump bana bu sağlamasıdır:

string(73) "Mem: 3024 1968 1055 0 159 608" 

Bu dize olmamalı (73) ama (29). Ben kendi dizi yapmak Eğer sorun yok hiç yoktur:

$out = array('','Mem: 3024 2020 1003 0 121 708',''); 
string(29) "Mem: 3024 1968 1055 0 159 608" 

kimse bana bir çözüm veya bu ayıklama bir sonraki adımı verebilir misiniz?

Saygılarımızla, Allan

cevap

1

Ben free -m çalıştırdığınızda, ben aslında almak yaklaşık 73 karakter (orada birçok alanlarda): Bunu neden olan şey olduğunu anlayacaksınız düşünüyorum

Mem:   2047   0  2047   0   0   0 

boş used ve total değerlerinde: Mem: ve 2047 arasındaki boşluklarda boş dizeleri boş alanlardan alıyorsunuz.

Bir çözüm, "/\s+/" numaralı bir ayırıcı ile preg_split kullanmaktır.

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

Ah sayesinde: –

1

gibi boşlukları kaldırın. Ona bakacağım! PHP sadece bir alan basar.