我试图让codeigniter在脚本工作时输出文本,但无法让它工作。我在这里和google上搜索,并看到使用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秒,等等。
发布于 2012-03-24 19:30:39
我今天试过了,也不管用。然后,我查看了内核的输出类,发现有一个私有的_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();
}
发布于 2013-02-13 20:22:28
具体来说,Code Igniter的问题是已经有一个有效的输出缓冲区。在测试之前使用以下代码片段至少可以让您摆脱php级别的缓冲:
// try to bust out of output buffering
while(ob_get_level()) {
ob_end_flush();
}
ob_end_flush();
正如@Wesley所指出的,这仍然可能会受到服务器配置的影响,但在我当前的设置中,我可以在打破所有输出缓冲区后将输出流回。
发布于 2016-12-05 07:55:09
使用以下命令检查服务器api
echo phpinfo();
如果您找到您的服务器api
Server API : CGI/FastCGI
CentOS中的在"/etc/httpd/conf.d/fcgid.conf“中添加以下行
OutputBufferSize 0
重新启动Apache服务器并尝试以下代码
ob_start();
for($i = 0; $i < 10; $i ++) {
echo $i;
echo '<br />';
flush();
ob_flush();
sleep(1);
}
https://stackoverflow.com/questions/5752556
复制相似问题