diff --git a/http-server/Constrict/ResponseEmitter.php b/http-server/Constrict/ResponseEmitter.php index 63c631be..bc549e6a 100644 --- a/http-server/Constrict/ResponseEmitter.php +++ b/http-server/Constrict/ResponseEmitter.php @@ -7,6 +7,7 @@ use Exception; use Kiri\Exception\NotFindClassException; use ReflectionException; use Psr\Http\Message\ResponseInterface; +use Server\RequestInterface; use Swoole\Server; @@ -24,6 +25,13 @@ class ResponseEmitter implements Emitter public DownloadEmitter $downloadEmitter; + /** + * @var \Server\RequestInterface + */ + #[Inject(RequestInterface::class)] + public RequestInterface $request; + + /** * @param \Swoole\Http\Response|\Swoole\Http2\Response $response * @param ResponseInterface|\Server\Message\Response $emitter @@ -44,9 +52,17 @@ class ResponseEmitter implements Emitter } } $response->setStatusCode($emitter->getStatusCode()); - $response->header('Run-Time', (time() + microtime(true)) - request()->getStartTime()); + $response->header('Run-Time', sprintf('%.5f', $this->getRunTime())); $response->end($emitter->getBody()); + } + + /** + * @return float + */ + private function getRunTime(): float + { + return microtime(true) - $this->request->getStartTime(); } }