[Сценарий] Uptime сервера и MegaD

Не требует установки программ или изменения файлов

Модераторы: immortal, newz20

Ответить
Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

[Сценарий] Uptime сервера и MegaD

Сообщение webms » Пт дек 22, 2017 12:06 pm

Готовый код, я люблю разные такие прикольные штуки) Делюсь!

В сценарии:

Код: Выделить всё

function seconds2times($seconds)
{
    $times = array();
    
    // считать нули в значениях
    $count_zero = false;

    // секунд в минуте|часе|сутках|году
    $periods = array(60, 3600, 86400, 31536000);
    
    for ($i = 3; $i >= 0; $i--)
    {
        $period = floor($seconds/$periods[$i]);
        if (($period > 0) || ($period == 0 && $count_zero))
        {
            $times[$i+1] = $period;
            $seconds -= $period * $periods[$i];
            
            $count_zero = true;
        }
    }
    
    $times[0] = $seconds;
    return $times;
}

$times_values = array('сек.','мин.','час.','д.','лет');

//----------------------------------------------------------------------------------------------------------

//уптайм сервера реальный
$uptime = gg('ThisComputer.uptime');
$seconds = array($uptime);

foreach ($seconds as $second)
{
    $times = seconds2times($second);
    for ($i = count($times)-1; $i >= 1; $i--)
    { 
     $server_pc .= $times[$i] . ' ' . $times_values[$i] . ' '; 
    }
}

sg('ThisComputer.uptimeTXT', $server_pc);

//////////////////////////////////////////////////////

//рекорд уптайма
if ($uptime > gg('ThisComputer.uptimeRecord')) {
 sg('ThisComputer.uptimeRecord', $uptime);
 
 // uptime рекорда
 $uptimeRec = gg('ThisComputer.uptime');
 $secondsRec = array($uptimeRec);

 foreach ($secondsRec as $secondRec)
 {
     $timesRec = seconds2times($secondRec);
     for ($i = count($timesRec)-1; $i >= 1; $i--)
     { 
      $server_pcRec .= $timesRec[$i] . ' ' . $times_values[$i] . ' '; 
     }
 }

 sg('ThisComputer.uptimeRecordTXT', $server_pcRec.' ['.date("d.m.Y").']');
}

//----------------------------------------------------------------------------------------------------------

//уптайм мегаД рельного времени 
$megad = preg_replace("/.*Uptime: (.*)<.*$/U", "$1", file_get_contents("http://192.168.0.200/sec/?cf=1"));
$format_ins = array( 'd', ':', ' 0' ); $format_end   =  array( " д. ", " час. ", " " );
$megad_form = str_replace($format_ins, $format_end, $megad);

sg('statusTerminal.uptime', $megad_form.' мин.');

//////////////////////////////////////////////////////

//рекорд уптайма без спецсимволов
$format_insFormat = array( 'd ', ':' ); $format_endFormat   =  array( "",  "" );
$megad_formFormat = str_replace($format_insFormat, $format_endFormat, $megad);

if ($megad_formFormat > gg('statusTerminal.uptimeRecord')) {
 //записываем данные
 sg('statusTerminal.uptimeRecord', $megad_formFormat);
 
 //расшифровка (добавление текста)
 $uptimeRecord = gg('statusTerminal.uptimeRecord'); //чтоб подгрузились новые записанные данные
 $one=substr($uptimeRecord,-2); $two=substr($uptimeRecord,-4,2);
 if (strlen($uptimeRecord) == 5) { $fre=substr($uptimeRecord,0,1);}
 if (strlen($uptimeRecord) == 6) { $fre=substr($uptimeRecord,-6,2);}
 sg('statusTerminal.uptimeRecordTXT', $fre.' д. '.$two.' час. '.$one.' мин. ['.date("d.m.Y").']');
}

 
В какие объекты записывать данные, выбирайте сами


Далее в меню

Код: Выделить всё

Uptime сервер: <span title="Рекорд %ThisComputer.uptimeRecordTXT%">%ThisComputer.uptimeTXT%</span><br/>
Uptime MegaD: <span title="Рекорд %statusTerminal.uptimeRecordTXT%">%statusTerminal.uptime%</span><br/><br/>
 
В onNewMinute

Код: Выделить всё

if ($m%5 == 0) { //опрос каждые 5 минут
 runScript('СЦЕНАРИЙ'); //uptime
} 
Вложения
516ea-clip-8kb.png
516ea-clip-8kb.png (7.55 КБ) 3283 просмотра
За это сообщение автора webms поблагодарили (всего 3):
Logrus (Пт дек 22, 2017 12:44 pm) • odinvolk (Пн янв 29, 2018 4:36 pm) • alex.frost (Ср авг 22, 2018 11:17 am)
Рейтинг: 3.49%
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Uptime сервера и MegaD

Сообщение Logrus » Пт дек 22, 2017 12:22 pm

//уптайм сервера реальный
ThisComputer.uptime
не сервера, а циклов мдм
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

Re: Uptime сервера и MegaD

Сообщение webms » Пт дек 22, 2017 12:36 pm

Logrus писал(а)://уптайм сервера реальный
ThisComputer.uptime
не сервера, а циклов мдм
Я знаю. Лично я не перезагружаю циклы, поэтому время совпадает с загрузкой сервера
Ответить