PHP Performance Hack – Throttling During Load Issues
I”ve had some performance issues lately with the server buckling under the pressure of a high peak user load . Other times, I”ve had issues with process intensive tasks that kept recursively spawning more instances of themelves.
Creating performance intensive scripts require a good amount of design & architecture forethought, and sometimes you can”t always foresee the ways things could go wrong.
I ended up adding a method to my PHP codebase, is_server_overloaded() , to partially alleviate the problem.
Source Below: (note: only works on linux boxes)
/****************************************/ // - Input vars: // - Preconditions: // - Postconditions: // - Returns: server load as a percentage // - Comments: // - // - function getServerLoad() { if(file_exists("/proc/loadavg")) { $Load = file_get_contents("/proc/loadavg"); $Load = explode('' '', $Load); return $Load[0]; } elseif(function_exists("shell_exec")) { $Load = explode('' '', `uptime`); return $Load[count($Load)-1]; } else { return ""; } } /****************************************/ // - Input vars: // - Preconditions: // - Postconditions: // - Returns: bool - true if server is overloaded // - Comments: // - // - function is_server_overloaded(){ return getServerLoad() > 10; }
If your code executes a lot of performance intensive tasks, and you”re starting to hit a lot of scale, you may want to consider using this code to establish an upper limit to the end users experienced load time.
I use this is_server_overloaded() method to establish an upper limit to the level I will push my server, and have a few performance intensive areas of my PHP/MySQL code that are designed to perform differently when a load issue appears (ie. when is_server_overloaded() == true).