首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Codeigniter 2.x -脚本工作时的回声输出

Codeigniter 2.x -脚本工作时的回声输出
EN

Stack Overflow用户
提问于 2011-04-22 13:33:34
回答 3查看 2.5K关注 0票数 2

我试图让codeigniter在脚本工作时输出文本,但无法让它工作。我在这里和google上搜索,并看到使用ob_end_flush();和flush();,同时还添加了更多字节,以便浏览器可以输出。但所有这些在CI 2.x中都不起作用。如果有人有幸做到这一点,请提前感谢。

我试过了

代码语言:javascript
复制
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秒,等等。

EN

回答 3

Stack Overflow用户

发布于 2012-03-25 03:30:39

我今天试过了,也不管用。然后,我查看了内核的输出类,发现有一个私有的_display()函数。我认为,在将输出显示到某个变量之前,会先收集它,然后最后调用此函数。因此,在控制器方法中的代码之前,我添加了下面这一行:

代码语言:javascript
复制
$this->output->_display("");

然后运行代码。啊,真灵。因此,修改后的函数如下所示:

代码语言:javascript
复制
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();
}
票数 0
EN

Stack Overflow用户

发布于 2013-02-14 04:22:28

具体来说,Code Igniter的问题是已经有一个有效的输出缓冲区。在测试之前使用以下代码片段至少可以让您摆脱php级别的缓冲:

代码语言:javascript
复制
// try to bust out of output buffering
while(ob_get_level()) {
    ob_end_flush();
}
ob_end_flush();

正如@Wesley所指出的,这仍然可能会受到服务器配置的影响,但在我当前的设置中,我可以在打破所有输出缓冲区后将输出流回。

票数 0
EN

Stack Overflow用户

发布于 2016-12-05 15:55:09

使用以下命令检查服务器api

代码语言:javascript
复制
echo phpinfo();

如果您找到您的服务器api

代码语言:javascript
复制
Server API :  CGI/FastCGI

CentOS中的在"/etc/httpd/conf.d/fcgid.conf“中添加以下行

代码语言:javascript
复制
OutputBufferSize 0

重新启动Apache服务器并尝试以下代码

代码语言:javascript
复制
ob_start();
for($i = 0; $i < 10; $i ++) {
        echo $i;
        echo '<br />';
        flush();
        ob_flush();
        sleep(1);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5752556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档