получите поршень сервера с php

Совершенно нормально использовать перечисление для индексации в массив.

Вы не должны определять каждое перечисление значений, они увеличат автоматически 1. Разрешение компилятору выбрать значения уменьшает возможность ввода с опечатками и создания ошибки, но это лишает Вас наблюдения значений, которые могли бы быть полезными в отладке.

31
задан yoda 21 September 2009 в 17:08
поделиться

3 ответа

Если вы знаете, что этот код будет работать только под Linux, вы можете использовать специальный файл / proc / meminfo для получения информации о подсистеме виртуальной памяти системы. Файл имеет следующую форму:

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

Эта первая строка, MemTotal: ... , содержит объем физической оперативной памяти в машине за вычетом пространства, зарезервированного ядром для собственного использования. Это лучший из известных мне способов получить простой отчет об используемой памяти в системе Linux. Вы должны иметь возможность извлечь его с помощью следующего кода:

<?php
  $fh = fopen('/proc/meminfo','r');
  $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"; ?>

(Обратите внимание: этот код может потребовать некоторой настройки для вашей среды.)

38
ответ дан 27 November 2019 в 21:44
поделиться

Использовать / proc / meminfo и поместить все в массив очень просто:

<?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"
  ...
37
ответ дан 27 November 2019 в 21:44
поделиться

Я не помню, чтобы когда-либо встречал такую ​​функцию - на самом деле, она выходит за рамки того, для чего создан PHP.

Даже если бы такая функциональность существовала, она вероятно, будет реализован способом, специфичным для базовой операционной системы, и, вероятно, не будет работать как в Linux, так и в Windows (см. sys_getloadavg для примера такого рода вещей)

-1
ответ дан 27 November 2019 в 21:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: