Как получить системную информацию в PHP?

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

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

4 ответов


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

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


вы ищете phpSysInfo:

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

  • Uptime
  • CPU
  • SCSI, IDE, PCI
  • сеть Ethernet
  • гибкий
  • Информация Видео

Проверьте демо


Это выкладывает все о cpu, ram, hdd и сети в формате 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 / * 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
        "}";
        ?>

Linfo предоставляет наиболее важную информацию о состоянии системы. Вам просто нужна система, где /proc и /sys монтируются (большинство unix-подобных систем, я думаю).

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

  • тип ЦП
  • использование оперативной памяти
  • устройства PCI / USB
  • жесткие диски
  • монтирование файловой системы
  • сетевые устройства
  • Temps / напряжения тока через hddtemp/mbmon
  • программные raid-массивы (mdadm или gmirror)
  • загрузка системы / количество процессов, потоков
  • дистрибутив Linux, если это возможно