private function _getWorkerID() { if ($this->_workerID === -1) { if (Container::IsRegistered(\swoole_server::class)) { $this->_workerID = Container::GetInstance(\swoole_server::class)->worker_id; } } return $this->_workerID; }
protected function tryInitInfo($force = false) { if (!isset($this->remoteIP) || $force) { //因为跨进程投递时server会改变,为了确保成功,不使用构造函数注入的方式获取当前server /** @var \swoole_server $swoole */ $swoole = Container::GetInstance(\swoole_server::class); $connectionInfo = $swoole->connection_info($this->GetFD(), $this->GetFromID()); $this->remoteIP = $connectionInfo['remote_ip']; $this->remotePort = $connectionInfo['remote_port']; $this->serverPort = $connectionInfo['server_port']; $this->connectTime = $connectionInfo['connect_time']; $this->lastTime = $connectionInfo['last_time']; } }
/** * @param \DIServer\Interfaces\IHandler $handler * * @return \Closure */ private function _createPipeClosure(\DIServer\Interfaces\IHandler $handler) { $pipeline = new Pipeline(); $middlewareClasses = $handler->GetMiddlewares(); $middlewareHandlers = []; foreach ($middlewareClasses as $middlewareClass) { $refClass = new \ReflectionClass($middlewareClass); if (!$refClass->isSubclassOf(IMiddleware::class)) { Log::Warning("Try to load {$middlewareClass} in " . get_class($handler) . " but is not instance of IMiddleware"); continue; } $middlewareHandlers[] = Container::BuildWithClass($middlewareClass); } return $pipeline->Through($middlewareHandlers)->Prepared(function ($request) use($handler) { //最后一层封装为Handler的默认Handle方法 return Container::CallMethod($handler, 'Handle', ['request' => $request]); }); }
public function __construct() { $pipeline = new Pipeline(); $middlewareClasses = $this->GetMiddlewares(); $middlewareHandlers = []; foreach ($middlewareClasses as $middlewareClass) { $refClass = new \ReflectionClass($middlewareClass); if (!$refClass->isSubclassOf(IMiddleware::class)) { Log::Debug("Try to load {$middlewareClass} in " . get_class($this) . " but is not instance of IMiddleware"); continue; } $middlewareHandlers[] = Container::BuildWithClass($middlewareClass); } $this->dispatchRequestClosure = $pipeline->Through($middlewareHandlers)->Prepared(function ($request) { //最后一层封装为Handler的默认Handle方法 return Container::CallMethod($this, 'Handle', ['request' => $request]); }); }
public function OnManagerStart(\swoole_server $server) { //各个进程的$server对象不是同一个,要重置。 Container::Unregister(\swoole_server::class); Container::RegisterClassByInstance(\swoole_server::class, $server); $this->managerServer = Container::GetInstance(IManagerServer::class); Event::Listen('OnManagerStart', [&$server]); $this->managerServer->OnManagerStart($server); }
/** * @return \swoole_server */ protected function getCurrentSwoole() { return Container::GetInstance(\swoole_server::class); }