private function ReloadTicker() { //重载Common级的Ticker $tickerFiles = AllFile(DI_APP_COMMON_TICKER_PATH, true, 'Ticker.php'); DILoadTicker($tickerFiles, "\\Common\\Ticker"); //重载ServerWorker级的Ticker $tickerFiles = AllFile(DI_APP_SERVER_TICKER_PATH, TRUE, 'Ticker.php'); DILoadTicker($tickerFiles, "\\" . DI_SERVER_NAME . "\\Ticker"); }
/** * 从指定路径加载Ticker * @param type $tickerFile Ticker的路径 * @param type $namespace Ticker的命名空间 * @return boolean Ticker是否加载成功 */ function DILoadTicker($tickerFile, $namespace = '') { if (is_array($tickerFile)) { foreach ($tickerFile as $path) { DILoadTicker($path, $namespace); } } else { if (file_exists($tickerFile)) { $fileName = array_pop(explode('/', $tickerFile)); $sortClassName = str_ireplace('.php', '', $fileName); $className = $namespace . '\\' . $sortClassName; require_cache($tickerFile); $TickerClass = new \ReflectionClass("\\DIServer\\Ticker"); try { $tickerClass = new \ReflectionClass($className); if ($tickerClass->isSubclassOf($TickerClass)) { $ticker = $tickerClass->newInstance(); DITicker($ticker); } } catch (\ReflectionException $ex) { DILog("ReflectionException On {$tickerFile}:{$ex->getMessage()}"); } return TRUE; } else { return FALSE; } } }