public function OnWorkerStart(\swoole_server &$server, &$worker_id) { $this->ReloadWorkerFunction(); $this->ReloadWorkerConfig(); $this->ReloadRequest(); $this->ReloadHandler($server); $this->ReloadService(); if (!$server->taskworker) { $this->ReloadTicker(); foreach (DITicker() as $ticker) { /* @var $ticker \DIServer\Ticker */ $ticker->TryBind($server, $worker_id); } } DILog(DI_SERVER_NAME . " Worker Start {$worker_id}" . "/Count<handler>" . count(DIHandler())); }
/** * 从指定路径加载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; } } }