|
sys_getloadavg
Gets system load average
(PHP 5 >= 5.1.3)
Example 1363. A sys_getloadavg() example<?php Code Examples / Notes » sys_getloadavgsurfchen
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
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). scott
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 "; } 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. |