如何流式传输一个流



是否可以从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)的东西,但然后不是文件作为输入,我想要一个流。

是的,只需将其复制到STDOUT,这是"一个只写流,允许您以与print()和echo()相同的方式写入输出缓冲区机制"。(手动).

stream_copy_to_stream($response->getStream(), STDOUT);

一个类似的解决方案是使用

fpassthru($response->getStream())

正如PHP手册明确指出的那样,STDOUT仅用于CLI SAPI。但即使在CLI中,它在以下上下文中也是不可用的

php < script.php

在这种情况下(如,如果你试图使用STDOUTphp-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上测试,但我很确定它在那里也能工作。

相关内容

  • 没有找到相关文章

最新更新