Основной цикл системы в MajorDoMo

Разработчикам 1 комментарий

Основной цикл системы

В этой заметке я опишу, как функционирует система с точки зрения задач, выполняемых периодически.

Для начала, имеет смысл сказать, что система может обрабатывать поступающие сигналы от внешних устройств и без запуска основных циклов. Система представляет собой веб-сервис и обработка входящего события в виде HTTP-запроса будет запущена сразу по поступлению запроса. Однако, есть ряд задач, которые должны инициироваться системой "изнутри", для этого вместе с веб-сервисом работают так называемые основные циклы.

Пару слов о том, почему эти сущности называются циклами. Всё просто -- они собой представляют запущенные бесконечные циклы, каждый из которых периодически инициирует то или иное событие, в зависимости от того, для чего этот цикл был запущен. Почему их несколько? Просто потому, что это позволяет паралельно и независимо друг от друга обеспечивать запуск тех или иных процедур.

Итак, циклы должны запускаться вместе со стартом системы и не закрываться в процессе работы. Инициируются циклы запуском скрипта ./cycle.php. Что делает этот скрипт -- он смотрит в папке ./scripts/ все файлы с именем cycle_*.php и создаёт паралельные процессы на запуск каждого из этих "дочерних" скриптов. Соответственно, каждый cycle-скрипт самостоятельно определяет, какие именно действия он должен производить.

На данный момент имеются вот такие основные циклы (их количество может меняться в зависимости от конфигурации системы):

  • cycle_main.php -- самый базовый цикл системы, обновляет системное время, а так же отвечает за работу объектов класса Timer
  • cycle_scheduler.php -- отвечает за выполнение задач, запланированных с помощью функций setTimeOut, AddScheduledJob и им подобных
  • cycle_execs.php -- цикл, отвечающий за запуск команд, добавленных через функцию safe_exec
  • cycle_webvars.php -- цикл, обеспечивающий обновление веб-переменных
  • cycle_bluetooth.php -- цикл сканера bluetooth-устройств
  • cycle_onewire.php , cycle_onewire_starred.php -- циклы опроса 1-wire сети
  • cycle_ping.php -- цикл опроса устройств online
  • cycle_rss.php -- цикл обновления RSS-потоков
  • cycle_skype.php (windows), cycle_X101_skype.php (linux) -- цикл/демон скайп-бота
  • cycle_snmp.php -- цикл опроса SNMP-устройств
  • cycle_states.php -- цикл обновления статусов состояния системы
  • cycle_watchfolders.php -- цикл сканирования изменений папок
  • cycle_zwave.php -- цикл опроса Z-Wave устройств?

Рассмотрим, что представляет собой cycle-скрипт на примере цикла ./scripts/cycle_webvars.php.

Поделитесь в соц сетях

Теги:

 

 

One thought on - Основной цикл системы в MajorDoMo