it-swarm.com.de

Wie bekomme ich CPU-Auslastung und RAM Verwendung ohne Exec?

Wie erhält VBulletin die Systeminformationen ohne die Verwendung von exec? Gibt es andere Informationen, die ich ohne exec über den Server erhalten kann? Ich interessiere mich für:

  • verwendete Bandbreite
  • systemtyp
  • CPU-Geschwindigkeit/Nutzung/Anzahl
  • RAM-Nutzung
28
Ronan Dejhero

Use PHPSysInfo -Bibliothek

phpSysInfo ist ein Open-Source-Skript PHP, das Informationen über den Host anzeigt, auf den zugegriffen wird. Es zeigt Dinge wie:

  • Betriebszeit
  • Zentralprozessor
  • Erinnerung
  • SCSI, IDE, PCI
  • Ethernet
  • Diskette
  • Videoinformationen

Es analysiert direkt /proc und verwendet exec nicht.


Eine andere Möglichkeit ist die Verwendung von Linfo. Es ist ein sehr schnelles cross-platform php-Skript, das den Host-Server extrem detailliert beschreibt und Informationen wie RAM-Auslastung, Speicherplatz, RAID-Arrays, Hardware, Netzwerkkarten, Kernel, os, Samba/cups/truecrypt enthält Status, Temps, Festplatten und vieles mehr.

44
shamittomar

Das ist was ich auf Linux-Servern verwende. Es verwendet immer noch exec, aber andere Fragen weisen hier auf ein Duplikat hin und es gibt keinen [guten] Vorschlag für diese. Sollte funktioniert auf jeder Distribution, aber wenn nicht, versuchen Sie, mit $get_cores + 1 offset zu tun.

CPU in Prozent der verwendeten Kerne (5 Min. Durchschnitt):

$exec_loads = sys_getloadavg();
$exec_cores = trim(Shell_exec("grep -P '^processor' /proc/cpuinfo|wc -l"));
$cpu = round($exec_loads[1]/($exec_cores + 1)*100, 0) . '%';

RAM in Prozent des Gesamtverbrauchs (in Echtzeit):

$exec_free = explode("\n", trim(Shell_exec('free')));
$get_mem = preg_split("/[\s]+/", $exec_free[1]);
$mem = round($get_mem[2]/$get_mem[1]*100, 0) . '%';

RAM in GB verwendet (Echtzeit):

$exec_free = explode("\n", trim(Shell_exec('free')));
$get_mem = preg_split("/[\s]+/", $exec_free[1]);
$mem = number_format(round($get_mem[2]/1024/1024, 2), 2) . '/' . number_format(round($get_mem[1]/1024/1024, 2), 2);

Folgendes befindet sich im $get_mem-Array, wenn Sie andere Facetten berechnen müssen:

[0]=>row_title [1]=>mem_total [2]=>mem_used [3]=>mem_free [4]=>mem_shared [5]=>mem_buffers [6]=>mem_cached

Bonus, hier ist, wie man die Betriebszeit erhält:

$exec_uptime = preg_split("/[\s]+/", trim(Shell_exec('uptime')));
$uptime = $exec_uptime[2] . ' Days';
4
dhaupin
<?php
function get_server_load() 
{
    $load=array();
    if (stristr(PHP_OS, 'win')) 
    {
        $wmi = new COM("Winmgmts://");
        $server = $wmi->execquery("SELECT LoadPercentage FROM Win32_Processor");  
        $cpu_num = 0;
        $load_total = 0;
        foreach($server as $cpu)
        {
            $cpu_num++;
            $load_total += $cpu->loadpercentage;
        }

        $load[]= round($load_total/$cpu_num);

    } 
    else
    {
        $load = sys_getloadavg();
    }
    return $load;
}
echo implode(' ',get_server_load());
3
Stergios Zg.

nach der Suche in Foren und dem Ausprobieren vieler Methoden ist dies am besten:

$stat1 = file('/proc/stat'); 
sleep(1); 
$stat2 = file('/proc/stat'); 
$info1 = explode(" ", preg_replace("!cpu +!", "", $stat1[0])); 
$info2 = explode(" ", preg_replace("!cpu +!", "", $stat2[0])); 
$dif = array(); 
$dif['user'] = $info2[0] - $info1[0]; 
$dif['Nice'] = $info2[1] - $info1[1]; 
$dif['sys'] = $info2[2] - $info1[2]; 
$dif['idle'] = $info2[3] - $info1[3]; 
$total = array_sum($dif); 
$cpu = array(); 
foreach($dif as $x=>$y) $cpu[$x] = round($y / $total * 100, 1);
print_r($cpu);
0
Vishnu T Asok