Beispiel #1
0
 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()));
 }
Beispiel #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;
        }
    }
}