Страница 1 из 4
Управление циклами (сервисами)
Добавлено: Пн окт 17, 2016 5:00 pm
sergejey
В последнем обновлении добавилась функция мониторинга работы циклов и управления их работой. Интерфейс доступен через раздел XRay->Services
Функция полезна в первую очередь разработчикам, которые создают свои модули, использующие фоновые циклы.
Вручную можно запустить/остановить цикл, а так же запретить его автозапуск (DISABLED) или же включить само-восстановление (AUTO-RECOVERY). Последнее позволяет системе автоматически перезапустить цикл, если он по какой-то причине закроется.
Кроме ручного управления, доступно управление циклами из кода, что может быть полезно, когда при изменении настроек модуля требуется перезапуск связанного с ним цикла. Для управления циклом использются глобальные переменные.
Например, есть цикл ./scripts/cycle_ping.php. Чтобы его остановить, достаточно выполнить команду в коде:
Для запуска:
Для рестарта:
Для запрета автозапуска (по-умолчанию он всегда разрешён):
Для включения авто-восстановления (по-умолчанию он всегда выключен):
Re: Управление циклами (сервисами)
Добавлено: Вт окт 18, 2016 3:20 pm
ipz
Опечатка в строке для запуска
Re: Управление циклами (сервисами)
Добавлено: Пн ноя 07, 2016 12:01 am
GreatBAO
видимо из за этого обновления, после запуска cyrcle.php в лог прет запуск всех циклов по кругу раз 40-50 ?
Код: Выделить всё
23:58:00 working thread: cycle_execs.php
23:58:00 working thread: cycle_states.php
23:58:00 working thread: cycle_rss.php
23:58:00 working thread: cycle_websockets.php
23:58:00 working thread: cycle_scheduler.php
23:58:00 working thread: cycle_ping.php
23:58:00 working thread: cycle_main.php
23:58:00 working thread: cycle_webvars.php
23:58:01 working thread: cycle_execs.php
23:58:01 working thread: cycle_states.php
23:58:01 working thread: cycle_rss.php
23:58:01 working thread: cycle_websockets.php
23:58:01 working thread: cycle_scheduler.php
23:58:01 working thread: cycle_ping.php
23:58:01 working thread: cycle_main.php
23:58:01 working thread: cycle_webvars.php
23:58:02 working thread: cycle_execs.php
23:58:02 working thread: cycle_states.php
23:58:02 working thread: cycle_rss.php
23:58:02 working thread: cycle_websockets.php
23:58:02 working thread: cycle_scheduler.php
23:58:02 working thread: cycle_ping.php
23:58:02 working thread: cycle_main.php
23:58:02 working thread: cycle_webvars.php
переустановил MJD отсюда -
http://majordomo.smartliving.ru/downloa ... 00b.tar.gz
все стартует нормально
как только обновляюсь, в лог прут кучу строк о запуске циклов, буквально за 2-3 минуты лог толстеет на 1-2мб из за этого
Re: Управление циклами (сервисами)
Добавлено: Вт ноя 08, 2016 10:44 am
GreatBAO
ответ нашел сам - в файле lib/threads.php
закоментировать строку 183 //echo date('H:i:s') . " working thread: " . $name . "\n";
не совсем понятен этот вывод в лог
Re: Управление циклами (сервисами)
Добавлено: Чт апр 06, 2017 10:38 am
ILGAS
Всем привет, подскажите как найти причину не возможности перезапуска цикла, majordomo пытает cycle_websockets сделать restart, но надпись так и висит, и не перезапускается. скрин тут
https://yadi.sk/i/lihbOMbp3Ghrqn
похожая проблема бывает с cycle_schedapp, цикл работает но majordomo пытается перезапустить цикл, в Debug каждую секунду пишет
Код: Выделить всё
17:31:40 0.58912700 Error registered (type: cycle_stop): ./scripts/cycle_schedapp.php
17:31:40 0.58764200 AUTO-RECOVERY: ./scripts/cycle_schedapp.php
17:31:39 0.56763000 Closing thread: c:/_majordomo/server/php/php.exe -q ./scripts/cycle_schedapp.php --params "a:0:{}">>C:\_majordomo\htdocs/debmes/log_2017-03-01-cycle_schedapp.php.txt
об этом писал
viewtopic.php?f=5&t=3411&start=20#p47149
Re: Управление циклами (сервисами)
Добавлено: Пн фев 05, 2018 11:41 pm
slgeo
Так и нет ответа? Никакой реакции на нажатия кнопок Start, Restart, только надпись висит. Что делать со службами, если они светятся синим шрифтом? Как вывести в поле Live значение для своего цикла, оно пустое?
Re: Управление циклами (сервисами)
Добавлено: Вт фев 06, 2018 6:10 am
nick7zmail
ILGAS писал(а):Всем привет, подскажите как найти причину не возможности перезапуска цикла, majordomo пытает cycle_websockets сделать restart
Может у вас сокеты отключены в config.php? Если они отключены, цикл скорее всего не должен быть запущен.
Re: Управление циклами (сервисами)
Добавлено: Вт фев 06, 2018 8:23 am
ipz
slgeo писал(а):Что делать со службами, если они светятся синим шрифтом? Как вывести в поле Live значение для своего цикла, оно пустое?
Синим цветом светятся те службы, которые не запущены. Делать с ними что-нибудь можно, если они вам нужны.
Что делать, чтобы выводилось значение в поле Live написано в UPD2 здесь
https://majordomo.smartliving.ru/forum/ ... =40#p70319
Re: Управление циклами (сервисами)
Добавлено: Вт фев 06, 2018 8:41 am
slgeo
c Live понял, спасибо.
А вот синим помечены у меня упавшие циклы.
sudo service majordomo start перестал запускать циклы. Хотя sudo service majordomo stop успешно отрабатывает. Спасает только перезагрузка.
Re: Управление циклами (сервисами)
Добавлено: Пн авг 31, 2020 9:14 pm
Divan
Измененный код для метода checkState объекта System с автоперезапуском цикла. Видео смотреть
здесь. Рекомендую, сначала проверять на тестовой машине, а после переносить на боевую.
Код: Выделить всё
$details=array();
$red_state=0;
$yellow_state=0;
$cycles=array('states'=>'цикл обновления статусов состояния системы','main'=>'главный цикл','execs'=>'цикл запуска команд','scheduler'=>'цикл планировщика');
foreach($cycles as $k=>$v) {
$tm = getGlobal('ThisComputer.cycle_'.$k.'Run');
if (time()-$tm>2*60 && !empty($tm)) {
$red_state = 1;
$details[] = $v." ".LANG_GENERAL_STOPPED.".";
setGlobal('ThisComputer.cycle_'.$k.'Run','');
setGlobal('ThisComputer.cycle_'.$k.'Control','restart');
}
}
$cycles=array('ping'=>'цикл опроса устройств online','webvars'=>'цикл, обеспечивающий обновление веб-переменных');
foreach($cycles as $k=>$v) {
$tm=getGlobal('ThisComputer.cycle_'.$k.'Run');
if (time()-$tm>3*60 && !empty($tm)) {
$yellow_state=1;
$details[]=$v." ".LANG_GENERAL_CYCLE." ".LANG_GENERAL_STOPPED.".";
setGlobal('ThisComputer.cycle_'.$k.'Run','');
setGlobal('ThisComputer.cycle_'.$k.'Control','restart');
}
}
if ($red_state) {
$state='red';
$state_title=LANG_GENERAL_RED;
} elseif ($yellow_state) {
$state='yellow';
$state_title=LANG_GENERAL_YELLOW;
} else {
$state='green';
$state_title=LANG_GENERAL_GREEN;
}
$new_details=implode(". ",$details);
if ($this->getProperty("stateDetails")!=$new_details) {
$this->setProperty('stateDetails',$new_details);
}
if ($this->getProperty('stateColor')!=$state) {
$this->setProperty('stateColor',$state);
$this->setProperty('stateTitle',$state_title);
if ($state!='green') {
say(LANG_GENERAL_SYSTEM_STATE." ".LANG_GENERAL_CHANGED_TO." ".$state_title.".");
say(implode(". ",$details));
} else {
say(LANG_GENERAL_SYSTEM_STATE." ".LANG_GENERAL_RESTORED_TO." ".$state_title);
}
$this->callMethod('stateChanged');
}
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/system_checkstate.php');
/* end injection of {SDevices} */