Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否仍然可以使用输出缓冲,如果可以,如何使用?_Php_Output Buffering - Fatal编程技术网

Php 是否仍然可以使用输出缓冲,如果可以,如何使用?

Php 是否仍然可以使用输出缓冲,如果可以,如何使用?,php,output-buffering,Php,Output Buffering,我一直在寻找一种在php脚本执行相当长的while循环时在浏览器中显示内容的方法。。。使用ob\u start(),flush(),ob\u flush()和ob\u end\u flush()。它失败了 在研究时,我发现一个用户帖子如下: “截至2012年8月,所有浏览器似乎都显示了一种全有或全无的缓冲方式。换句话说,当php运行时,无法显示任何内容。” 文章接着说,所有其他的帖子都是无关紧要的。如果这是真的,为什么PHP.net显示了不推荐使用的必要函数?如果不是,请告诉我如何正确实现简单脚

我一直在寻找一种在php脚本执行相当长的while循环时在浏览器中显示内容的方法。。。使用
ob\u start()
flush()
ob\u flush()
ob\u end\u flush()
。它失败了

在研究时,我发现一个用户帖子如下:

“截至2012年8月,所有浏览器似乎都显示了一种全有或全无的缓冲方式。换句话说,当php运行时,无法显示任何内容。”

文章接着说,所有其他的帖子都是无关紧要的。如果这是真的,为什么PHP.net显示了不推荐使用的必要函数?如果不是,请告诉我如何正确实现简单脚本的输出缓冲:

function simpleFunction() {
    for ($i = 0; $i < 10000; $i++) {
        $data = $externalJsondata;
        if($data == "True")
        {
        echo ("Output1");
        }
        else{
        echo ("Output2");           
        };
    };   
}

simpleFunction(); 
函数simpleFunction(){
对于($i=0;$i<10000;$i++){
$data=$externalJsondata;
如果($data==“True”)
{
回波(“输出1”);
}
否则{
回波(“输出2”);
};
};   
}
simpleFunction();
回答/破解由以下人员提供:

函数simpleFunction(){
如果(!defined('STDOUT'))定义('STDOUT',fopen('php://stdout“,”w“);
对于($i=0;$i<10000;$i++){
$data=$externalJsondata;
如果($data==“True”)
{
回波(“输出1”);
冲洗(标准液);
}
否则{
回波(“输出2”);
冲洗(标准液);
};
};   
}
simpleFunction();

谢谢;)

您是在寻找一个通用的解决方案(针对生产环境)还是只针对单个服务器/客户端/浏览器组合的解决方案?最初的问题是什么?很可能OB不是你想要的解决方案。根据我的经验,处理坏的
header()
/
setcookie
调用总是一个难题。请注意,输出缓冲的常见用途是存储输出以供进一步编辑,而不是出于性能原因控制发送到浏览器的内容。我有一个旧的拼凑脚本,仍然使用OB来防止“头已经发送”错误。不知道您提到的浏览器问题。可能存在重复的
function simpleFunction() {
if (!defined('STDOUT'))define('STDOUT', fopen("php://stdout", "w"));
    for ($i = 0; $i < 10000; $i++) {
        $data = $externalJsondata;
        if($data == "True")
        {
        echo ("Output1");
        flush(STDOUT);
        }
        else{
        echo ("Output2");
        flush(STDOUT);        
        };
    };   
}

simpleFunction();