使用 php 获取服务器 RAM

2022-08-30 12:23:05

有没有办法知道服务器(linux发行版)中可用的ram与php(使用linux命令的widout)?

编辑:对不起,目标是了解服务器/虚拟机中可用的RAM,用于特定服务器(即使该内存是共享的)。


答案 1

如果您知道此代码仅在 Linux 下运行,则可以使用特殊文件来获取有关系统虚拟内存子系统的信息。该文件具有如下形式:/proc/meminfo

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

第一行 包含计算机中物理 RAM 的数量,减去内核为自己使用而保留的空间。据我所知,这是获得Linux系统上可用内存的简单报告的最佳方法。您应该能够通过类似于以下代码的内容提取它:MemTotal: ...

<?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"; ?>

(请注意:此代码可能需要针对您的环境进行一些调整。


答案 2

使用所有内容并将其放入数组中非常简单:/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"
  ...

推荐