【发布时间】:2012-09-05 00:53:21
【问题描述】:
我正在尝试文档中的这个示例:Streaming a Response in Symfony2。
/**
* @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;
}
这会同时输出所有内容。我是不是做错了什么?
【问题讨论】:
-
在
flush()之前尝试ob_flush() -
我试过以防万一,但这不起作用,因为没有
ob_start()。它也不适用于ob_start和ob_flush。 -
我认为您可能将 php.ini 中的 output_buffering 设置为 4096,而某些默认 php.ini 具有。
-
就我而言,
ob_flush()确实解决了这个问题。你如何测试它?你知道浏览器不会在第一个之后 3 秒显示第二个 Hello World 吗?你需要通过 telnet 或者 netcat 什么的来测试一下 -
好的!你能发表回复,我会接受。您介意添加一些有关 telnet 或使用方式的信息吗?那将是真棒。谢谢@mask8
标签: symfony symfony-2.1