2014-04-08 6 views
8

Ich möchte Server CPU und RAM-Nutzung mit PHP. Das Skript sollte auf Windows und Linux funktionieren.Wie erhalten Sie Server-CPU-Auslastung und RAM-Auslastung mit PHP?

Wie würde ich das tun?

+0

[ 'shell_exec'] (http://www.php.net/manual/en/function.shell-exec.php) es tun sollte oder versuchen' var_dump ($ _ SERVER) 'für mi nimal info –

+0

ist Ihre Frage hier beantwortet? http://stackoverflow.com/questions/4705759/how-to-get-cpu-usage-and-ram-usage-without-exec –

+0

gibt es einen Terminal-Befehl, 'nice top' (oder nur' top'), die ausgibt Ihre CPU-Auslastung und RAM. Kombiniert mit shell_exec() und ein wenig Analyse der Ausgabe sollte bekommen, was Sie wollen. – roycable

Antwort

14

Die erste Funktion wird der Server Speichernutzung zurück:

function get_server_memory_usage(){ 

    $free = shell_exec('free'); 
    $free = (string)trim($free); 
    $free_arr = explode("\n", $free); 
    $mem = explode(" ", $free_arr[1]); 
    $mem = array_filter($mem); 
    $mem = array_merge($mem); 
    $memory_usage = $mem[2]/$mem[1]*100; 

    return $memory_usage; 
} 

Diese Funktion wird die Server-CPU-Auslastung zurück:

function get_server_cpu_usage(){ 

    $load = sys_getloadavg(); 
    return $load[0]; 

} 
+3

Ich vermute, beide funktionieren nur in * nix-ähnlichen Betriebssystemen. – halfer

+1

'sys_getloadavg()' gibt 'load' zurück, was nicht unbedingt die CPU-Auslastung ist. Es enthält Festplattengeschwindigkeiten usw. – kouton

+1

Und wie bekomme ich die aktuelle (nicht avg) CPU-Nutzung? – zypro

4

ich PHP über SNMP raten würde

http://www.php.net/manual/en/book.snmp.php

Dies wird eine einheitliche Lösung für Windows und Linu bieten x ohne mit exec Befehlen herumzualbern.

Sie brauchen natürlich einen Windows-SNMP-Daemon/Service sowohl auf Windows- und Linux-Servern

für Linux zu installieren, verwenden Sie einfach Net-SNMP zB CentOS

sudo yum install net-snmp 
sudo service snmpd start 
sudo chkconfig snmpd on 

Net-SNMP ist auch verfügbar für Windows:

http://www.net-snmp.org/