@@ -16,14 +16,15 @@ class Server extends Adapter
1616 protected SwooleServer $ server ;
1717 protected const REQUEST_CONTAINER_CONTEXT_KEY = '__utopia_http_request_container ' ;
1818 protected Container $ container ;
19+ protected ?Container $ requestContainer = null ;
1920
2021 public function __construct (string $ host , ?string $ port = null , array $ settings = [], ?Container $ container = null )
2122 {
2223 $ this ->server = new SwooleServer ($ host , $ port );
23- $ this ->server ->set (\array_merge ($ settings , [
24+ $ this ->server ->set (\array_merge ([
2425 'enable_coroutine ' => true ,
2526 'http_parse_cookie ' => false ,
26- ]));
27+ ], $ settings ));
2728 $ this ->container = $ container ?? new Container ();
2829 }
2930
@@ -34,7 +35,11 @@ public function onRequest(callable $callback)
3435 $ requestContainer ->set ('swooleRequest ' , fn () => $ request );
3536 $ requestContainer ->set ('swooleResponse ' , fn () => $ response );
3637
37- Coroutine::getContext ()[self ::REQUEST_CONTAINER_CONTEXT_KEY ] = $ requestContainer ;
38+ if (Coroutine::getCid () !== -1 ) {
39+ Coroutine::getContext ()[self ::REQUEST_CONTAINER_CONTEXT_KEY ] = $ requestContainer ;
40+ } else {
41+ $ this ->requestContainer = $ requestContainer ;
42+ }
3843
3944 $ utopiaRequest = new Request ($ request );
4045 $ utopiaResponse = new Response ($ response );
@@ -45,7 +50,11 @@ public function onRequest(callable $callback)
4550
4651 public function getContainer (): Container
4752 {
48- return Coroutine::getContext ()[self ::REQUEST_CONTAINER_CONTEXT_KEY ] ?? $ this ->container ;
53+ if (Coroutine::getCid () !== -1 ) {
54+ return Coroutine::getContext ()[self ::REQUEST_CONTAINER_CONTEXT_KEY ] ?? $ this ->container ;
55+ }
56+
57+ return $ this ->requestContainer ?? $ this ->container ;
4958 }
5059
5160 public function onStart (callable $ callback )
0 commit comments