Saltar al contenido

Obtenga el porcentaje de uso de cpu en php

Solución:

después de buscar en foros y probar muchos métodos, la mejor precisión es la siguiente:

$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);

ahora las estadísticas están en $ cpu[‘user’], $ cpu[‘nice’], $ cpu[‘sys’], $ cpu[‘idle’]

No estoy 100% seguro de lo que está preguntando, pero si estoy en lo cierto, esta respuesta podría ayudarlo:

<?php
    exec('ps -aux', $processes);
    foreach($processes as $process)
    {
        $cols = split(' ', ereg_replace(' +', ' ', $process));
        if (strpos($cols[2], '.') > -1)
        {
            $cpuUsage += floatval($cols[2]);
        }
    }
    print($cpuUsage);
?>

El código proporcionado fue una respuesta de Devils Child para una pregunta similar: https://stackoverflow.com/a/9846219/904242

La respuesta de Diyism, así como la sugerencia en http://php.net/manual/en/function.sys-getloadavg.php no parecía funcionar en CentOS 6.5 VPS. Tuvimos que cambiar physical id para processor. Luego, devuelve un núcleo como ID 0, por lo que el cálculo necesita +1 núcleos. Además, debe multiplicar por 100 para obtener un percentil. Finalmente, eso debe redondearse para obtener un buen porcentaje. Entonces, aquí hay un pensamiento alternativo que puede funcionar si se encuentra con algo de eso:

<?php
$loads = sys_getloadavg();
$core_nums = trim(shell_exec("grep -P '^processor' /proc/cpuinfo|wc -l"));
$load = round($loads[0]/($core_nums + 1)*100, 2);
echo $load;
?>

Entonces, si carga promedio [0] era 0.50 en una máquina de 2 núcleos, esto mostraría una carga de CPU del 25%

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *