Форум сетевых администраторов
Показаны 12 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Как получить loadavg в FreeBSD (http://netadmin.ws/forum/showthread.php?threadid=11279)


Помещено Jovani 12-12-2005 в 08:54:

Как получить loadavg в FreeBSD

Подскажите, как средствами PHP, получить текущую нагрузку сервера в FreeBSD ? Если можно с примером.

Стандартное чтение loadavg для Linux-а не проходит, так как нету 'cat /proc/loadavg'


Помещено Bochkarev_D.S. 12-12-2005 в 11:45:

Jovani
sysctl -n vm.loadavg


Помещено Jovani 12-12-2005 в 14:52:

Bochkarev_D.S.
Пример можешь?

В линуксе, все прекрасно делается так:

code:

<?php
$loadavg_array = explode(" ", exec("/proc/loadavg"));
$loadavg = $loadavg_array[2];
print("Load: " . $loadavg . "%");
?>



$loadavg_array[2] - это средняя нагрузка за пять минут.
А в FreeBSD, аналогично как будет ?


Помещено polo 12-12-2005 в 15:26:

не знаю как в FreeBSD, но стаким же успехом можно попробовать exec и команду которую указал Bochkarev_D.S.:
PHP:


exec
('sysctl -n vm.loadavg', $output);
print_r($output);

__________________
Всегда есть решение.


Помещено Bochkarev_D.S. 13-12-2005 в 06:56:

пример мода global.php для отключки vb на freebsd при большой нагрузке


code:

if ($vbulletin->options['loadlimit'] > 0) 
{ 
    if ( is_readable('/proc/loadavg') ) 
    {//    if it's located on a Linux system: 
        $fh = @fopen( '/proc/loadavg', 'r' ); 
        $load_avg = @fread( $fh, 6 ); 
        @fclose( $fh ); 
        $loadavg = substr($load_avg, 0, strpos($load_avg, ' ')); 
    } 
    else 
    {//    if it's located on a FreeBSD system: 
        $load_avg = `sysctl -n vm.loadavg`; 
        $load_avg = str_replace('{ ', '', $load_avg); 
        $loadavg = substr($load_avg, 0, strpos($load_avg, ' ')); 
    } 
     
    if ($loadavg > $vbulletin->options['loadlimit']) 
    { 
        $servertoobusy = true; 
    } 
}  



Bochkarev_D.S. добавил 13-12-2005 в 07:01:22:
`` можно и не юзать


Помещено Jovani 13-12-2005 в 09:18:

Ни фига не получается
Нижеследующий код возвращает пустое значение $loadavg

PHP:


<?php
$load_avg 
= `sysctl -n vm.loadavg`;
$load_avg = str_replace('{ ', '', $load_avg);
$loadavg = substr($load_avg, 0, strpos($load_avg, ' '));
print(
"Load: " . $loadavg . "%");
?>


Помещено Jovani 13-12-2005 в 11:36:

Похоже, что нет доступа к sysctl


Помещено Bochkarev_D.S. 13-12-2005 в 14:57:

Jovani как написал polo сделай


Помещено Jovani 13-12-2005 в 18:53:

quote:
Первоначальное сообщение от Bochkarev_D.S.
Jovani как написал polo сделай

Если как у polo, выводтся:
Array ( )


Помещено polo 13-12-2005 в 20:13:

Проверь комманду в шелле сначало. Сначало надо убедиться что там работает.

__________________
Всегда есть решение.


Помещено Jovani 14-12-2005 в 00:52:

В том-то и дело, что шелла нет, хотел через PHP.
У знакомого стоит FreeBSD, он давал команду %sysctl -n vm.loadavg, нагрузку показывает.


Помещено polo 22-12-2005 в 23:33:

а exec срабатывает? может в php safe_mode включен.

__________________
Всегда есть решение.


Формат времени GMT. Текущее время 18:19.
Показаны 12 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.