Вы можете сделать это через exec
:
exec('wmic memorychip get capacity', $totalMemory);
print_r($totalMemory);
Будет напечатано (на моей машине 2x2 и 2x4 блока оперативной памяти):
Array
(
[0] => Capacity
[1] => 4294967296
[2] => 2147483648
[3] => 4294967296
[4] => 2147483648
[5] =>
)
Вы можете легко суммировать это, используя
echo array_sum($totalMemory);
, который затем даст 12884901888. Чтобы превратить это в кило-, мега- или гигабайты, разделите на 1024 каждый, например,
echo array_sum($totalMemory) / 1024 / 1024 / 1024; // GB
Дополнительные способы командной строки для запроса общего объема оперативной памяти можно найти в
Другой программный способ - через COM
:
// connect to WMI
$wmi = new COM('WinMgmts:root/cimv2');
// Query this Computer for Total Physical RAM
$res = $wmi->ExecQuery('Select TotalPhysicalMemory from Win32_ComputerSystem');
// Fetch the first item from the results
$system = $res->ItemIndex(0);
// print the Total Physical RAM
printf(
'Physical Memory: %d MB',
$system->TotalPhysicalMemory / 1024 /1024
);
Подробнее об этом примере COM см.
Вы, вероятно, можете получить эту информацию из других API Windows, например, .NET API. .
Существует также расширение PECL для этого в Windows:
Согласно документации, он должен возвращать массив, который содержит (среди прочего) ключ с именем total_phys
, который соответствует « Объем всей физической памяти. »
Но так как это расширение PECL, вам сначала нужно установить его на свой компьютер.