如何从控制器到视图的“实时”回声

时间:2018-04-13 16:59:31

标签: yii2

我有一个控制器,它执行一些广泛而耗时的操作,我想向用户显示其部分结果;我认为我必须处理“进度条”,看了一些例子和插件,但它们远远超出我的知识(目前!)。

现在,我很满意以一种简单的方式将部分结果“回显”到视图中。

我的控制器:

..
foreach ($response->messages as $msg) {
  ..
  ..(do something)..
  echo (partial results)."<br>";
}

所以问题是,视图仅在循环结束时呈现,并且在漫长的等待空白屏幕后立即显示部分结果。

我希望我的'回声'在foreach循环中显得“实时”。这是一种方法吗?

1 个答案:

答案 0 :(得分:0)

您可能需要flush() ob_flush()

foreach ($response->messages as $msg) {
    // ..(do something)..
    echo (partial results) . "<br>";
    ob_flush();
    flush();
}
exit;

请注意,您应该在方法结束时调用exit - 因为2.0.14 Yii不允许使用echo i控制器,因此您需要手动停止进一步的响应处理。