我試圖用streamedResponse輸出進步到Symfony2的我的索引頁面模板視圖。如何使用StreamedResponse呈現在Symfony2的
下面這段代碼確實表明我對API的調用進步,因爲它的發生,但我有麻煩呈現在實際視圖中的流信息。現在它只是在頁面頂部輸出純文本,然後在視圖全部完成時渲染視圖。
我不想返回最終陣列,直到一切都加載關閉功能,但我似乎無法得到正規樹枝模板,而我輸出的進度顯示。
我一直在使用渲染,但似乎沒有真正輸出中該視圖文件到屏幕上,除非我回到嘗試。
public function indexAction($countryCode)
{
//anywhere from five to fifteen api calls are going to take place
foreach ($Widgets as $Widget) {
$response = new StreamedResponse();
$curlerUrl = $Widget->getApiUrl()
. '?action=returnWidgets'
. '&data=' . urlencode(serialize(array(
'countryCode' => $countryCode
)));
$requestStartTime = microtime(true);
$curler = $this->get('curler')->curlAUrl($curlerUrl);
$curlResult = json_decode($curler['body'], true);
if(isset($curlResult['data'])){
//do some processing on the data
}
$response->setCallback(function() use ($Widget, $executionTime) {
flush();
sleep(1);
var_dump($Widget->getName());
var_dump($executionTime);
flush();
});
$response->send();
}
//rest of indexAction with a return statement
return array(
//all the vars my template will need
);
}
此外,另一個重要的細節是,我試圖渲染所有的樹枝,似乎有一些有趣的問題。
這15個請求是順序嗎? – Rhono
@羅諾,是的,他們是順序的。現在,頁面在完成之前不會呈現,因此我試圖在每個調用完成時顯示進度。 – absentx