【问题标题】:How to stream a stream?如何流式传输?
【发布时间】:2011-12-24 16:08:39
【问题描述】:

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

【问题讨论】:

  • yo dawg,我听说你想用你的流进行流传输?抱歉帮不上忙! ;P

标签: php zend-framework stream amazon-s3


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    类似的解决方案是使用

    fpassthru($response->getStream())
    

    由于PHP manual clearly states,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 上对此进行测试,但我很确定它也可以在那里工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-20
      • 2021-07-16
      • 2013-01-25
      • 1970-01-01
      • 2015-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多