Предлагается 2 простых индикатора, позволяющих определить наскользо загружен web-сервер, на котором располагается сайт. Все индикаторы основаны на выводе команды exec, которая вызывает системные приложения UNIX-подобной операционной системы.
Основана на выводе команды uptime. Считается, что значение этого параметра >1 должно вызывать серьёзную озабоченность.
$ uptime 09:45:01 up 1:52, 3 users, load average: 0.26, 0.21, 0.09
<?php /* ============= Замер загрузки сервера ================= */ $load_scale=2; // Масштаб шкалы // Получение данных об аптайме и загрузке $load=exec("uptime"); // Выделение текущей загрузки $load=preg_replace("/^.*average.*?:\s([0-9]+?)\.([0-9]+?)\,\ .*$/","$1.$2",$load); // Определение цветовой шкалы $colors=array( "#aaffaa","#aff7aa","#b7f0aa","#bfe7aa","#c7e0aa", "#cfd7aa","#d7d0aa","#dfc7aa","#E7c0aa","#F0b7aa", "#F7aaaa","#FFaa99","#FF9988","#FF8877","#FF7766", "#ff6655","#ff5544","#ff4433","#ff3322","#ff2211", "#ff1100","#ee1100","#dd0000","#cc0000","#bb0000", "#aa0000","#990000"); ?> <!-- Шкала загрузки системы --> <table border="0"style=" border-top: 1px #8FFF8F solid; border-bottom: 1px #8FFF8F solid; border-left: 1px #8FFF8F solid; border-right: 1px #8FFF8F solid; "> <tr> <?php foreach($colors as $k=>$v){?> <td bgcolor="<?php if($load>=($k/$load_scale))echo $v;?>">   </td> <?php }?> <td> <?php echo $load;?> </td> </tr> </table>
Количество процессов web-сервера
Основана на выводе команды ps, выборке строк, содержащих http с помощью grep, и подсчете количества выбранных строк с помощью wc -l
$ ps -A|grep httpd 4348 ? 00:00:00 httpd 4356 ? 00:00:00 httpd 4357 ? 00:00:00 httpd 4358 ? 00:00:00 httpd 4359 ? 00:00:00 httpd 4360 ? 00:00:00 httpd 4361 ? 00:00:00 httpd 4362 ? 00:00:00 httpd 4363 ? 00:00:00 httpd $ ps -A|grep httpd|wc -l 9
<?php // Масштаб шкалы $httpd_scale=0.1; // Получение данных о колистве процессов web-сервера $httpd=exec("ps -A|grep httpd|wc -l"); $httpd=trim($httpd); ?> <!-- Шкала количества процессов --> <table border="0"style=" border-top: 1px #FF8F8F solid; border-bottom: 1px #FF8F8F solid; border-left: 1px #FF8F8F solid; border-right: 1px #FF8F8F solid; "> <tr> <?php foreach($colors as $k=>$v){?> <td bgcolor="<?php if($httpd>=($k/$httpd_scale))echo $v;?>">   </td> <?php }?> <td> <?php echo $httpd;?> </td> </tr> </table>