2

我试图让 codeigniter 在脚本工作时输出文本,但无法让它工作。我在这里和谷歌上搜索并看到使用 ob_end_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 秒等。

4

3 回答 3

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();
}
于 2012-03-24T19:30:39.303 回答
0

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

// try to bust out of output buffering
while(ob_get_level()) {
    ob_end_flush();
}
ob_end_flush();

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

于 2013-02-13T20:22:28.437 回答
0

检查您的服务器 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);
    }
于 2016-12-05T07:55:08.557 回答