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

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

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

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

08:01:52 up 248 days, 1:05, 0 users, load average: 1.69, 1.83, 1.72

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

$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>';
//дальше делаем то,что хотелсь бы

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


.