/** * Вывод текущего состояния сервиса. * * @access protected * @static */ protected static function cmdStatus() { try { $pid = Assets\PID::Read(); echo "Running with PID={$pid}\n"; exit(0); } catch (Assets\Exceptions\PID_Non_Existent_Exception $e) { echo "Currently not running\n"; exit(0); } catch (Assets\Exceptions\PID_Open_Fail_Exception $e) { echo "PID-file exists but unreadable\n"; exit(1); } catch (Assets\Exceptions\PID_Lock_Success_Exception $e) { echo "PID-file exists but not locked\nDaemon tragically died\n"; exit(1); } catch (Assets\Exceptions\PID_Read_Fail_Exception $e) { echo "PID-file reading failed!\n"; exit(1); } catch (\Exception $e) { var_export($e->getMessage()); } }
/** * Корневой метод мастера. * * @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; }