2011-01-02 2 views
8

Я хочу получить использование системной памяти (а также информацию о пространстве на жестком диске) в PHP. Есть ли способ обойтись без вызова команд с использованием вызовов system?Как получить информацию о системе в PHP?

Примечание: Я не ищу использование памяти сценария, а использование системной памяти.

+0

Я сомневаюсь, что есть способ обойтись без вызова команд с использованием системных вызовов. И я сомневаюсь, что есть необходимость искать такой путь. –

+0

Вызов 'system' отключен на общем хостинге. –

ответ

2

В Linux, вы можете прочитать /proc/meminfo, чтобы получить информацию о полной и доступной системной памяти (только cat /proc/meminfo - это простой текстовый файл, который можно легко разобрать).

Я не уверен, что вы можете получить файловую информацию от procfs, попробуйте найти /proc/sys/fs для получения более подробной информации.

+0

спасибо .. если phpsysinfo не легкий, я, вероятно, буду использовать этот метод ... Я надеялся, что php будет иметь некоторые функции библиотеки, но это не должно быть слишком сложно. –

16

Вы ищете phpSysInfo:

phpSysInfo это PHP скрипт, который отображает информацию о хозяине осуществляется доступ. Он будет отображает такие вещи, как:

  • Uptime
  • CPU
  • памяти
  • SCSI, IDE, PCI
  • Ethernet
  • Floppy
  • видеоинформации

Check out the DEMO

+0

Я верю, что phpSysInfo выполняет внешние команды для получения некоторой информации. – nimrodm

+1

@nimrodm: Мне случается (неясно) знать, что для Linux phpSysInfo читает '/ proc/meminfo' (как вы сказали в своем ответе). – thirtydot

+0

спасибо .. это выглядит намного больше, чем я хочу, но очень приятно. –

3

Linfo обеспечивает наиболее важную информацию о состоянии системы. Вам просто нужна система, в которой установлены /proc и /sys (как я полагаю, самая унифицированная система).

С сайта: Информация Показано

  • Тип процессора
  • Использование RAM
  • PCI/USB устройства
  • Жесткие диски
  • Файловая система монтирует
  • Сетевые устройства
  • Темп/Напряжения через hddtemp/mbmon
  • Software RAID массивы (либо mdadm или gmirror)
  • Система нагрузки/количество процессов, потоков
  • распределение Linux, если это возможно
+1

Linfo намного проще интегрировать в качестве стороннего инструмента (например, в фреймворк), чем в phpSysInfo, тогда как он предоставляет почти ту же информацию. Оба работают как на Windows, так и на платформах * nix. Оба поддерживают альтернативные выходы через JSON/XML и т. Д. PhpSysinfo имеет 2,5 МБ и множество динамически генерируемых ссылок CSS/JS (почти все жестко запрограммировано), тогда как LInfo имеет 400 кБ и определяет отдельно WEB_PATH, поэтому его легче интегрировать. phpSysInfo работает нормально, если вы скопируете его прямо под свой веб-сайт, в противном случае вы будете придерживаться часовых исправлений жестко закодированных ссылок :-(LInfo имеет немного более простой интерфейс интерфейса GUI. – lubosdz

9

Это тушить все около центрального процессора, оперативной памяти, жесткий диск и сети в формате JSON. (хорошо для обработки с помощью jQuery)

<?php 
     //cpu stat 
     $prevVal = shell_exec("cat /proc/stat"); 
     $prevArr = explode(' ',trim($prevVal)); 
     $prevTotal = $prevArr[2] + $prevArr[3] + $prevArr[4] + $prevArr[5]; 
     $prevIdle = $prevArr[5]; 
     usleep(0.15 * 1000000); 
     $val = shell_exec("cat /proc/stat"); 
     $arr = explode(' ', trim($val)); 
     $total = $arr[2] + $arr[3] + $arr[4] + $arr[5]; 
     $idle = $arr[5]; 
     $intervalTotal = intval($total - $prevTotal); 
     $stat['cpu'] = intval(100 * (($intervalTotal - ($idle - $prevIdle))/$intervalTotal)); 
     $cpu_result = shell_exec("cat /proc/cpuinfo | grep model\ name"); 
     $stat['cpu_model'] = strstr($cpu_result, "\n", true); 
     $stat['cpu_model'] = str_replace("model name : ", "", $stat['cpu_model']); 
     //memory stat 
     $stat['mem_percent'] = round(shell_exec("free | grep Mem | awk '{print $3/$2 * 100.0}'"), 2); 
     $mem_result = shell_exec("cat /proc/meminfo | grep MemTotal"); 
     $stat['mem_total'] = round(preg_replace("#[^0-9]+(?:\.[0-9]*)?#", "", $mem_result)/1024/1024, 3); 
     $mem_result = shell_exec("cat /proc/meminfo | grep MemFree"); 
     $stat['mem_free'] = round(preg_replace("#[^0-9]+(?:\.[0-9]*)?#", "", $mem_result)/1024/1024, 3); 
     $stat['mem_used'] = $stat['mem_total'] - $stat['mem_free']; 
     //hdd stat 
     $stat['hdd_free'] = round(disk_free_space("/")/1024/1024/1024, 2); 
     $stat['hdd_total'] = round(disk_total_space("/")/1024/1024/ 1024, 2); 
     $stat['hdd_used'] = $stat['hdd_total'] - $stat['hdd_free']; 
     $stat['hdd_percent'] = round(sprintf('%.2f',($stat['hdd_used']/$stat['hdd_total']) * 100), 2); 
     //network stat 
     $stat['network_rx'] = round(trim(file_get_contents("/sys/class/net/eth0/statistics/rx_bytes"))/1024/ 1024/ 1024, 2); 
     $stat['network_tx'] = round(trim(file_get_contents("/sys/class/net/eth0/statistics/tx_bytes"))/1024/ 1024/ 1024, 2); 
     //output headers 
     header('Content-type: text/json'); 
     header('Content-type: application/json'); 
     //output data by json 
     echo  
     "{\"cpu\": " . $stat['cpu'] . ", \"cpu_model\": \"" . $stat['cpu_model'] . "\"" . //cpu stats 
     ", \"mem_percent\": " . $stat['mem_percent'] . ", \"mem_total\":" . $stat['mem_total'] . ", \"mem_used\":" . $stat['mem_used'] . ", \"mem_free\":" . $stat['mem_free'] . //mem stats 
     ", \"hdd_free\":" . $stat['hdd_free'] . ", \"hdd_total\":" . $stat['hdd_total'] . ", \"hdd_used\":" . $stat['hdd_used'] . ", \"hdd_percent\":" . $stat['hdd_percent'] . ", " . //hdd stats 
     "\"network_rx\":" . $stat['network_rx'] . ", \"network_tx\":" . $stat['network_tx'] . //network stats 
     "}"; 
     ?> 
Смежные вопросы