diff --git a/src/TamerLib/tm.php b/src/TamerLib/tm.php index ccf667f..ba3306e 100644 --- a/src/TamerLib/tm.php +++ b/src/TamerLib/tm.php @@ -228,14 +228,38 @@ */ public static function monitor(int $timeout=0): void { - try + if($timeout > 0) { - self::$supervisor?->monitor($timeout); - self::$server?->monitor($timeout); + try + { + self::$supervisor?->monitor($timeout); + self::$server?->monitor($timeout); + } + catch(Exception $e) + { + Log::error(Utilities::getName(), $e->getMessage(), $e); + } } - catch(Exception $e) + else { - Log::error(Utilities::getName(), $e->getMessage(), $e); + $start_time = time(); + while(true) + { + try + { + self::$supervisor?->monitor(-1); + self::$server?->monitor(-1); + } + catch(Exception $e) + { + Log::error(Utilities::getName(), $e->getMessage(), $e); + } + + if(time() - $start_time >= $timeout) + { + break; + } + } } }