Наш чат в Telegram для обмена идеями, проектами, мыслями, людьми в сфере ИТ г.Ростова-на-Дону: @it_rostov

Определяем загруженность сервера из PHP

Есть скрипт, который запускается по крону и что-то там делает, например расылка уведомлений или чистка и упаковка базы банных. Это "что-то" не срочное и, когда у сервера высокая загрузка, то лучше эту работу отложить до лучших времен. Соответственно нужно получить в PHP загруженность сервера.

Пример определения загрузки сервера на PHP:

01:08:48 up 170 days, 18:12, 0 users, load average: 0.51, 0.76, 0.89

Низкая нагрузка сервера!

$loadLimit = 5; // Значение load average, больше которого выполняться не нужно
$uptime = exec('uptime');
echo $uptime;
if(preg_match('!load average: ([\d\.]+), [\d\.]+, [\d\.]+!si', $uptime, $cpu)) {
    if((float)str_replace(',', '.', $cpu[1]) > $loadLimit) {
        echo '<h4>Высокая нагрузка сервера!</h4>';
        die('Высокая нагрузка сервера');
    }else
        echo '<h4>Низкая нагрузка сервера!</h4>';
}else echo '<h4>Не определил нагрузку сервера!</h4>';
//дальше делаем то,что хотелсь бы

При этом можно ориентироваться по первому значению, но, если сервер склонен к быстрым пиковым нагрузкам, то, вероятно, лучше использовать более долгосрочное второе значение.