Check system load in php on linux

System load

System load is a measure of how busy the system is running the processes. Higher system load simply means more processes are running and more are waiting to be run. When coding php applications, it sometimes is useful or necessary to find the current load on the server/system. For example if you want to run a long resource intensive task like database operation, then you may wan't to first ensure that system load is low enough for the task to run without causing system availability issues.

In php there are a number of ways to check the system load or the load on your web server. Note that these are for linux only. They do not apply to windows.

Method 1

The first method is to read the /proc/loadavg file on linux. It outputs the load averages.

echo file_get_contents('/proc/loadavg');

It basically shows the content of the file /proc/loadavg. It can be checked from terminal/shell like this

$ cat /proc/loadavg

Output :
0.04 0.08 0.11 1/381 3584

There are 5 fields.
1. Average load on server in past 1 minute.
2. Average load on server in past 5 minutes.
3. Averate load on server in past 10 minutes.
4. Running processes/Total processes
5. Last process id that ran.

Method 2

Another way to get the system load is by running the uptime system command.

$uptime = shell_exec("uptime");
echo "$uptime";

Output is :

11:51:23 up 34 min,  2 users,  load average: 0.00, 0.01, 0.06

The last 3 numbers after load average are same as the first 3 numbers of the proc/loadavg output.

Method 3

Php as of version 5.1.3 has an inbuilt function called sys_getloadavg that can be directly used to get the load parameters. It is the simplest method and does not require any system calls.

Returns three samples representing the average system load (the number of processes in the system run queue) over the last 1, 5 and 15 minutes, respectively.
print_r(sys_getloadavg());
Array
(
    [0] => 0.51
    [1] => 0.26
    [2] => 0.16
)

Thats values in the array are the loads in the past 1, 5 and 15 minutes respectively.

Resources

For a better explanation of CPU load check this wikipedia article
http://en.wikipedia.org/wiki/Load_(computing)







Last Updated On : 12th June 2013

Subscribe to get updates delivered to your inbox

3 Comments + Add Comment

  • hello

    has anyone tried gphoto2 commands in the php

    my php

    its working fine in terminal but when i run in localhost its doest not excute

  • Just what I needed! wrapped a bash-script around to check in intervalls, so now I’ve got a quick and easy way to keep track of the serverload. Thanks! :-D

  • Yup, but that’s even easier from ANSI C scripts, see the G-WAN server

Leave a comment