我试图让codeigniter输出文本,因为脚本正在运行,但无法使其工作。我在这里和谷歌搜索并使用ob_end_flush();和flush();并且还可以添加更多字节,以便浏览器可以输出。但这些都不适用于CI 2.x.如果有人对此有好运,请提前感谢
我试过了
function test()
{
ob_end_flush();
echo "test1";
ob_start();
sleep(3);
ob_end_flush();
echo "test1";
ob_start();
sleep(3);
ob_end_flush();
echo "test1";
ob_start();
}
没有运气。脚本等待6秒钟,然后立即吐出所有内容。我希望它将输出回显到屏幕然后等待3秒然后输出下一个回声然后等待另外3秒等。
答案 0 :(得分:0)
我今天尝试了这个,但也没有用。然后我查看了核心的输出类,并且有一个私有的_display()函数。我认为输出是在显示到某个变量之前收集的,然后最后调用该函数。所以在我的控制器方法代码之前,我添加了这一行:
$this->output->_display("");
然后运行代码。有效。所以你修改过的函数会是这样的:
function test()
{
$this->output->_display("");
ob_end_flush();
echo "test1";
ob_start();
sleep(3);
ob_end_flush();
echo "test1";
ob_start();
sleep(3);
ob_end_flush();
echo "test1";
ob_start();
}
答案 1 :(得分:0)
您对Code Igniter的具体问题是已经有一个输出缓冲区生效。在使用以下代码段进行测试之前,至少会让您退出php级别的缓冲:
// try to bust out of output buffering
while(ob_get_level()) {
ob_end_flush();
}
ob_end_flush();
正如@Wesley所说,服务器的配置仍然可能会破坏这种情况,但在我目前的设置中,我可以在淘汰所有输出缓冲区之后将输出流回来。