php-runtime/runtime

StreamedResponse not supported in Roadrunner

alexander-schranz opened this issue ยท 4 comments

More as a reference here currently there is no way to use a StreamedResponse inside roadrunner. This is because things output with echo, var_dump, flush or any other php internal method is not supported by roadrunner and is in this case ignored.

The issue on the roadrunner side is here: https://github.com/spiral/roadrunner/issues/2.

Hi, I think I can give a little help here.

RoadRunner does not support streaming the responses, it means PSR responses streams are just consumed entirely and sent as one payload to RR.

StreamedResponse are well handled on the PsrHttpFactory side.

The problem is that Symfony setups a StreamedResponseListener which consumes the stream before PsrHttpFactory.

I handled this by disabling the Symfony listener when running in RR: https://github.com/Baldinof/roadrunner-bundle/blob/2.x/src/Integration/Symfony/StreamedResponseListener.php

FWIW, StreamedResponse doesn't seem to work with swoole either ๐Ÿค”

Errata: bitten by StreamedResponseListener, which operates also under swoole :|

Adding here a reference to #116 as when implementing this for roadrunner we should also keep that in mind.

Looks good that roadrunner 2.9 will bring us streaming responses: roadrunner-server/roadrunner#923 (comment)