示例#1
0
 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");
 }
示例#2
0
/**
 * 从指定路径加载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;
        }
    }
}