2020use Micro \Plugin \Http \Facade \HttpFacadeInterface ;
2121use Micro \Plugin \Http \Facade \HttpRoadrunnerFacadeInterface ;
2222use Nyholm \Psr7 \Factory \Psr17Factory ;
23+ use Nyholm \Psr7 \Response as Psr7Response ;
2324use Spiral \RoadRunner ;
2425use Symfony \Bridge \PsrHttpMessage \Factory \HttpFoundationFactory ;
2526use Symfony \Bridge \PsrHttpMessage \Factory \PsrHttpFactory ;
2829{
2930 public function __construct (
3031 private HttpFacadeInterface $ httpFacade ,
31- private HttpRoadrunnerFacadeInterface $ httpRoadrunnerFacade
32+ private HttpRoadrunnerFacadeInterface $ httpRoadrunnerFacade,
3233 ) {
3334 }
3435
@@ -51,17 +52,25 @@ public function on(EventInterface $event): void
5152 $ psr17Factory = new Psr17Factory ();
5253 $ httpMessageFactory = new PsrHttpFactory ($ psr17Factory , $ psr17Factory , $ psr17Factory , $ psr17Factory );
5354
54- $ worker = RoadRunner \Worker::create ();
55- $ worker = new RoadRunner \Http \PSR7Worker ($ worker , $ psr17Factory , $ psr17Factory , $ psr17Factory );
55+ $ psr7 = new RoadRunner \Http \PSR7Worker (RoadRunner \Worker::create (), $ psr17Factory , $ psr17Factory , $ psr17Factory );
5656 $ i = 0 ;
5757 $ gcCollectStep = $ this ->httpRoadrunnerFacade ->getGcCollectCyclesCount ();
58- while ($ request = $ worker ->waitRequest ()) {
58+ while (true ) {
59+ try {
60+ $ request = $ psr7 ->waitRequest ();
61+ } catch (\Throwable $ e ) {
62+ $ psr7 ->respond (new Psr7Response (400 ));
63+
64+ continue ;
65+ }
66+
5967 try {
6068 $ appRequest = $ httpFoundationFactory ->createRequest ($ request );
6169 $ appResponse = $ this ->httpFacade ->execute ($ appRequest , false );
62- $ worker ->respond ($ httpMessageFactory ->createResponse ($ appResponse ));
70+ $ psr7 ->respond ($ httpMessageFactory ->createResponse ($ appResponse ));
6371 } catch (\Throwable $ e ) {
64- $ worker ->getWorker ()->error ((string ) $ e );
72+ $ psr7 ->respond (new Psr7Response (500 ));
73+ $ psr7 ->getWorker ()->error ((string ) $ e );
6574 } finally {
6675 if (++$ i === $ gcCollectStep ) {
6776 gc_collect_cycles ();
0 commit comments