Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I throttle the max CPU usage of a php script?

Tags:

php

cpu-usage

I have some scripts that use a ton of cpu is it possible to cap the amount of cpu a process is allowed to use? I am running on CentOs 5.5 by the way.

like image 949
james Avatar asked Sep 26 '10 02:09

james


2 Answers

I helped a fellow PHP coder create PHP scripts which address a similar issue. These are long-running PHP scripts which generate a lot of load. Since they're long running, the goal was to "pause" them if load gets too high. The script has a function similar to:

function get_server_load()
{
    $fh = fopen('/proc/loadavg', 'r')
    $data = fread($fh, 6);
    fclose($fh);
    $load_avg = explode(" ", $data);
    return floatval(trim($load_avg[0]));
}

The script calls get_server_load() during each loop, and if the load is greater than a given max, it sleeps for 30 seconds and checks again:

set_time_limit(120);
while(get_server_load() > $max_load)
    sleep($load_sleep_time);

This allows the script to give CPU time back to the server during periods of high load.

like image 118
Josh Avatar answered Sep 27 '22 18:09

Josh


maybe you could use nice?

like image 24
Alfred Avatar answered Sep 27 '22 17:09

Alfred