php ile sunucu ram olsun

4 Cevap php

(Linux komutları kullanarak widthout) php ile bir sunucu DAİREMİZ koçu (linux dağıtımı) bilmek için bir yol var mı?

edit: Üzgünüm, nesnel (yani bellek paylaşılan bile) belirli bir sunucu için, sunucu / sanal makinede kullanılabilir ram farkında olmaktır.

4 Cevap

Bu kod sadece Linux altında çalışan olacak biliyorsanız, sistemin sanal bellek alt sistemi hakkında bilgi almak için özel /proc/meminfo dosyasını kullanabilirsiniz. Dosya böyle bir formu vardır:

MemTotal:       255908 kB
MemFree:         69936 kB
Buffers:         15812 kB
Cached:         115124 kB
SwapCached:          0 kB
Active:          92700 kB
Inactive:        63792 kB
...

O ilk satırı, MemTotal: ..., makinede fiziksel RAM miktarı, eksi kendi kullanımı için çekirdek tarafından ayrılmış boşluk içerir. Bu bir Linux sistemi üzerinde kullanılabilir bellek basit bir rapor almak için bildiğim en iyi yoludur. Aşağıdaki kodu gibi bir şey ile bunu ayıklamak gerekir:

<?php
  $fh = fopen('/proc/meminfo');
  $mem = 0;
  while ($line = fgets($fh)) {
    $pieces = array();
    if (preg_match('^MemTotal:\s+(\d+)\skB$', $line, $pieces)) {
      $mem = $pieces[1];
      break;
    }
  }
  fclose($fh);

  echo "$mem kB RAM found"; ?>

(Lütfen dikkat: Bu kod, çevre için bazı verdiği gerekebilir.)

'/ Proc / meminfo' kullanarak ve bir diziye her şeyi almak basittir:

<?php

function getSystemMemInfo() 
{       
    $data = explode("\n", file_get_contents("/proc/meminfo"));
    $meminfo = array();
    foreach ($data as $line) {
    	list($key, $val) = explode(":", $line);
    	$meminfo[$key] = trim($val);
    }
    return $meminfo;
}

?>

var_dump (getSystemMemInfo ());

array(43) {
  ["MemTotal"]=>
  string(10) "2060700 kB"
  ["MemFree"]=>
  string(9) "277344 kB"
  ["Buffers"]=>
  string(8) "92200 kB"
  ["Cached"]=>
  string(9) "650544 kB"
  ["SwapCached"]=>
  string(8) "73592 kB"
  ["Active"]=>
  string(9) "995988 kB"
  ...

Linux PHP exec fonksiyonu kullanılarak çalıştırılabilir komutları. Bu verimli ve (objektif bellek almak için ise) iş yapacak.

Aşağıdaki kodu deneyin:

<?php
  exec("free -mtl", $output);
  print_r($output);
?>

Ben hiç böyle bir işlevi gördükten hatırlamıyorum - PHP için yapılır ne kapsam dışında kendi tür, aslında.

Böyle bir functionnality yoktu bile, muhtemelen temel işletim sistemine özgü olacak şekilde hayata olacağını ve muhtemelen Linux ve pencereler (see sys_getloadavg {[(1)] hem işe yaramaz }