Как стримить поток? - PullRequest
       6

Как стримить поток?

2 голосов
/ 08 ноября 2011

возможно ли передавать поток из Zend_Service_Amazon_S3 (http://framework.zend.com/manual/en/zend.service.amazon.s3.html#zend.service.amazon.s3.streaming) в браузер?

Я ищу что-то вроде readfile (http://www.php.net/manual/en/function.readfile.php), но вместо файла в качестве ввода мне нужен поток.

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Да, просто скопируйте его в STDOUT, который является «потоком только для записи, который позволяет записывать в механизм выходного буфера точно так же, как print () и echo ()» ( manual ).

stream_copy_to_stream($response->getStream(), STDOUT);
0 голосов
/ 06 марта 2017

Аналогичным решением является использование

fpassthru($response->getStream())

Как ясно сказано в руководстве PHP * , STDOUT доступно только для CLI SAPI. Но даже в CLI он недоступен в контексте, подобном этому

php < script.php

В этом случае (например, если вы пытаетесь использовать STDOUT с php-fpm), вы получаете следующую ошибку с stream_copy_to_stream():

PHP Notice:  Use of undefined constant STDOUT - assumed 'STDOUT' in $FILE on line $LINE
PHP Warning:  stream_copy_to_stream() expects parameter 2 to be resource, string given in $FILE on line $LINE

Эта проблема исчезает, как только вы используете fpassthru()

Я не проверял это на AWS, но я почти уверен, что он там тоже работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...