Example #1
0
 /**
  * Корневой метод мастера.
  * 
  * @return int
  * @access public
  * @static
  */
 public static function main()
 {
     DEBUG && (print "Master::main(): begin\n");
     static::$start_utime = microtime(true);
     try {
         cli_set_process_title('PingerService/Master/WarmUp');
         // открытие PID-файла
         PID::Lock();
         // регистрация обработчика сигналов
         static::initSignalHandlers();
         // предварительная загрузка классов
         static::preloadClasses();
         // сброс статистики хостов
         static::resetHostsStatuses(HostStatuses::SERVICE_STARTED);
         // включение Мастер-цикла
         static::$master_loop = true;
         // выполнение Мастер-цикла
         static::masterLoop();
         cli_set_process_title('PingerService/Master/Shutdown');
         // сброс статистики хостов
         static::resetHostsStatuses(HostStatuses::SERVICE_STOPPED);
         // закрытие PID-файла
         PID::Unlock();
         // успешный выход
         DEBUG && printf("Master::main(): exit with status 0\n  uptime %0.2fsecs, %d forks\n\n", microtime(true) - static::$start_utime, static::$fork_num);
         return 0;
     } catch (\Exception $e) {
         var_dump($e);
     }
     DEBUG && printf("Master::main(): exit with status 1\n  uptime %0.2fsecs, %d forks\n\n", microtime(true) - static::$start_utime, static::$fork_num);
     return 1;
 }