Информация о загрузке процессора на PHP на примере IPB

Чтобы форум показывал данную информацию, нужно проделать несколько несложных операций.

Открываем файл ./admin/sources/base/core.php
Ищем:

        if( !$server_load_found )
{
# @ supressor stops warning in > 4.3.2 with open_basedir restrictions

И после вставляем:

            $data =  sys_getloadavg();
$load_limit = $data[0];


Затем ищем:

if ( @file_exists(‘/proc/loadavg’) )

и заменяем на

if (!$load_limit && @file_exists(‘/proc/loadavg’) )


Теперь информацию и загрузке процессора форум будет получать при помощи функции sys_getloadavg

Если Вы хотите, чтобы на форуме всегда отображалась информация о текущей загрузке процессора не зависимо от того установлено ли ограничение в админцентре или нет тогда проделайте следующее:
Откройте файл ./admin/sources/base/ipsRegistry.php и найдите в нем:

            /* Check server load */
if ( ipsRegistry::$settings[‘load_limit’] > 0 )
{
$server_load    = IPSDebug::getServerLoad();

if ( $server_load )
{
$loadinfo = explode( «-«, $server_load );

if ( count($loadinfo) )
{
self::$server_load = $loadinfo[0];

if ( self::$server_load > ipsRegistry::$settings[‘load_limit’] )
{
self::instance()->getClass(‘output’)->showError( ‘server_too_busy’, 2001 );
}
}
}
}

и замените этот код на следующий:

            /* Check server load */
if ( ipsRegistry::$settings[‘show_load_limit’] > 0 || ipsRegistry::$settings[‘load_limit’] > 0 ) {
$server_load    = IPSDebug::getServerLoad();

if ( $server_load )
{
$loadinfo = explode( «-«, $server_load );

if ( count($loadinfo) )
{
if ( ipsRegistry::$settings[‘show_load_limit’] > 0 )
{
self::$server_load = $loadinfo[0];
}

if ( ipsRegistry::$settings[‘load_limit’] > 0 && self::$server_load > ipsRegistry::$settings[‘load_limit’] )
{
self::instance()->getClass(‘output’)->showError( ‘server_too_busy’, 2001 );
}
}
}
}

Затем заходите в админцентр, Tools & Settings -> System Settings -> System -> CPU Saving & Optimization (Настройки, Системные настрйоки, Система, CPU и оптимизация) и добавьте новый пункт в настройках:
Setting title: Показывать загрузку ЦП?
Setting Position: 0
Setting Description: Показывать загрузку ЦП на форуме или нет
Setting Group: CPU Saving & Optimization
Setting Type: Yes/No Radio Buttons
Setting Key: show_load_limit
Setting Default Value: 1
Остальные поля оставляем пустыми.

Теперь на вашем форуме будет отображаться информация о загрузке CPU:

Информация о загрузке процессора на PHP на примере IPB

А при превышении допустимого значения, установленного в настройках форума пользователи увидят соответствующее сообщение.

Функция sys_getloadavg выводит среднюю информацию о загрузке процессора (количество процессов в очереди) за последние 1, 5 и 15 минут.
Вот пример для использования функции на других движках или скриптах:

$data =  sys_getloadavg();
echo $data[0]; // 0.04
echo $data[0].’ ‘.$data[1].».$data[2] // 0.04 0.15 0.22

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *