首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Symfony2中流式传输响应

在Symfony2中流式传输响应
EN

Stack Overflow用户
提问于 2012-09-12 11:23:02
回答 1查看 17.7K关注 0票数 12

我正在尝试文档中的这个示例:Streaming a Response in Symfony2

代码语言:javascript
运行
复制
/**
 * @param Request $request
 * @return Response $render
 * @Route("/streamedResponse", name="streamed_response")
 * @Template("AcmeTestBundle::streamedResponse.html.twig")
 */
public function streamedResponseAction(Request $request)
{
    $response = new StreamedResponse();
    $response->setCallback(function () {
        echo 'Hello World';
        flush();
        sleep(3);
        echo 'Hello World';
        flush();
    });

    return $response;

}

这将同时输出所有内容。我做错什么了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-12 13:40:54

我尝试添加ob_flush(),它似乎起作用了。下面是我的代码:

代码语言:javascript
运行
复制
public function streamedAction()
{
    $response = new StreamedResponse();
    $response->setCallback(function () {
        echo 'Hello World';
        ob_flush();
        flush();
        sleep(3);
        echo 'Hello World';
        ob_flush();
        flush();
    });

    return $response;
}

这将返回包含分块数据的分块传输编码头。以下是结果的输出:

代码语言:javascript
运行
复制
$ telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is '^]'.
GET /app_dev.php/streamed HTTP/1.1
Host: symfony21.localdomain

HTTP/1.1 200 OK
Date: Wed, 12 Sep 2012 05:34:12 GMT
Server: Apache/2.2.17 (Unix) DAV/2 mod_ssl/2.2.17 OpenSSL/0.9.8o
cache-control: no-cache, private
x-debug-token: 50501eda7d437
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

b
Hello World
b
Hello World
0

Connection closed by foreign host.

如果你在浏览器中看到这个响应,它将在加载大约3秒后显示"HelloWorldHelloWorld“,因为浏览器将等待所有分块的数据被接收为Content-Type为text/*,但当你看到网络流时,它实际上是通过发送分块的数据进行流式传输。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12380783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档