php - ultimate - ¿Cómo obtener el uso de la CPU y el uso de RAM sin ejecutivos?
liberar uso de cpu (4)
Esto es lo que uso en servidores Linux. Aún usa exec
, pero otras preguntas apuntan aquí como duplicadas, y no hay una [buena] sugerencia para ellas. Debería funcionar en cada distribución, pero si no funciona, intente jugar con $get_cores + 1
offset.
CPU en porcentaje de núcleos utilizados (media de 5 min):
$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 en porcentaje del total utilizado (en tiempo real):
$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 en GB utilizada (en tiempo real):
$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);
Aquí está lo que hay en la matriz $get_mem
si necesita calcular otras facetas:
[0]=>row_title [1]=>mem_total [2]=>mem_used [3]=>mem_free [4]=>mem_shared [5]=>mem_buffers [6]=>mem_cached
Bono, aquí es cómo obtener el tiempo de actividad:
$exec_uptime = preg_split("/[/s]+/", trim(shell_exec(''uptime'')));
$uptime = $exec_uptime[2] . '' Days'';
¿Cómo obtiene VBulletin la información del sistema sin el uso de exec
? ¿Hay alguna otra información que pueda obtener sobre el servidor sin ejecutivo? Estoy interesado en:
- ancho de banda utilizado
- tipo de sistema
- Velocidad / uso / conteo de la CPU
- Uso de RAM
después de buscar en foros y probar muchos métodos, la mejor precisión es esta:
$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);
Utilice la biblioteca PHPSysInfo
phpSysInfo es un script PHP de código abierto que muestra información sobre el host al que se accede. Mostrará cosas como:
- Tiempo de actividad
- UPC
- Memoria
- SCSI, IDE, PCI
- Ethernet
- Flexible
- Información de video
Analizó directamente parses /proc
y no usa exec
.
Otra forma es usar Linfo . Es una secuencia de comandos php multiplataforma muy rápida que describe el servidor host con extremo detalle, brindando información como uso de ram, espacio en disco, arrays de raids, hardware, tarjetas de red, kernel, os, estado de samba / cups / truecrypt, temps, discos, y mucho más.
<?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());