equivalent for windows
<?php
ob_start();
passthru('typeperf -sc 1 "\processor(_total)\% processor time"',$status);
$content = ob_get_contents();
ob_end_clean();
if ($status === 0) {
if (preg_match("/\,\"([0-9]+\.[0-9]+)\"/",$content,$load)) {
if ($load[1] > get_config('busy_error')) {
header('HTTP/1.1 503 Too busy, try again later');
die('Server too busy. Please try again later.');
}
}
}
?>
sys_getloadavg
(PHP 5 >= 5.1.3)
sys_getloadavg — Obtiene la carga media del sistema
Descripción
array sys_getloadavg
( void
)
Devuelve tres muestras que representan la carga media del sistema (el número de procesos en la cola de ejecución del sistema) sobre los últimos 1, 5 y 15 minutos, respectivamente.
Valores devueltos
Devuelve un array con tres muestras (últimos 1, 5 y 15 minutos).
Ejemplos
Example #1 Ejemplo de sys_getloadavg()
<?php
$carga = sys_getloadavg();
if ($carga[0] > 80) {
header('HTTP/1.1 503 Ocupado, pruebe más tarde');
die('Servidor ocupado. Por favor, inténtelo de nuevo más tarde.');
}
?>
Notas
Note: Esta función no está implementada en plataformas Windows.
828586 at gmail dot com
12-Jun-2010 02:43
Anonymous
19-Nov-2009 08:14
To get just current load avg, you can do :
<?php
$output = shell_exec('cat /proc/loadavg');
$loadavg = substr($output,0,strpos($output," "));
?>
scott at corelevel dot com
27-Nov-2006 10:47
I was having a problem with a large script I need to run - was a loop through about 50,000 records and downloading several pictures for a bunch of them, and updating the database.
the problem came as I started getting visitors to my site, the server would get behind, run out of memory, iowait skyrockets, mysql slows down... was a total downhill spiral.
Use this to fix it.
$load = sys_getloadavg();
$sleep=5;
$maxload=2;
if ($load[0] > $maxload) {
sleep($sleep);
echo "Busy server - sleep $sleep seconds<br>";
}
I have to play with the load and the sleep number to find what worked for my script, but now my server does not bog at all.
surfchen at gmail dot com
06-Jul-2006 04:22
the codes below will provide this function for order versions of PHP.
if (!function_exists('sys_getloadavg')) {
function sys_getloadavg()
{
$loadavg_file = '/proc/loadavg';
if (file_exists($loadavg_file)) {
return explode(chr(32),file_get_contents($loadavg_file));
}
return array(0,0,0);
}
}
tom pittlik
03-Mar-2006 10:36
The code below mimics the output of sys_getloadavg(). You may have to tweak the way the substring is captured for different distros.
<?
function sys_getloadavg_hack()
{
$str = substr(strrchr(shell_exec("uptime"),":"),1);
$avs = array_map("trim",explode(",",$str));
return $avs;
}
print_r(sys_getloadavg_hack());
// Array
// (
// [0] => 6.24
// [1] => 4.92
// [2] => 3.99
// )
?>
This function is a neat way of running low priority or non-essential cron jobs on a busy server - if the load is high, don't continue with the task (and try again in a few minutes time).
