Php 浏览器不是';t渲染ob_立即刷新输出

Php 浏览器不是';t渲染ob_立即刷新输出,php,javascript,browser,flush,Php,Javascript,Browser,Flush,我正在使用iframe方法编写一个文件上传脚本。在后端,post文件上传,脚本还做了一些事情。因此,我会在上传文件后立即将输出刷新到浏览器(进入iframe),然后脚本继续。从Chrome控制台中,我可以看到浏览器已经收到了响应(200 OK),但是,由于某些原因,浏览器只在整个脚本完成后才渲染响应,导致了相当长的延迟。为什么会这样?如何让浏览器立即渲染它 我在某某和其他地方读过很多关于这个话题的文章、博客和Q/a,这些文章、博客和Q/a给了我以下提示,但它们似乎都不起作用: -某些浏览器需要最

我正在使用iframe方法编写一个文件上传脚本。在后端,post文件上传,脚本还做了一些事情。因此,我会在上传文件后立即将输出刷新到浏览器(进入iframe),然后脚本继续。从Chrome控制台中,我可以看到浏览器已经收到了响应(200 OK),但是,由于某些原因,浏览器只在整个脚本完成后才渲染响应,导致了相当长的延迟。为什么会这样?如何让浏览器立即渲染它

我在某某和其他地方读过很多关于这个话题的文章、博客和Q/a,这些文章、博客和Q/a给了我以下提示,但它们似乎都不起作用: -某些浏览器需要最少字节数才能开始渲染(256/1024/4096)。 -如果缺少关闭标记,浏览器会在开始渲染之前等待它。 -内容长度是必需的,否则浏览器可能会一直等待更多数据

我已经涵盖了以上内容,我还遗漏了什么

Backend code:
       $r = "
            <!DOCTYPE html>
                <head>
                    <title></title>
                </head>
                <body>
                    <p id='response'>$response</p>
                    <p>".str_repeat(".", 4096)."</p>
                </body>
            </html>
        ";
        ignore_user_abort(true);
        set_time_limit(0);
        ob_end_clean();
        ob_start();
        echo $r;
        header("Content-Length: ".ob_get_length());
        header("Connection: close", true);
        header("Content-Encoding: none");
        ob_end_flush();
        flush();

Frontend code:
    var iframe = document.getElementById("uploaddocframe_" + aid);
    var iframeobj = (iframe.contentWindow || iframe.contentDocument);
    if(iframeobj.document) {
        var iframedocument = iframeobj.document;
        var response = iframedocument.getElementById("response").innerHTML;
        if(response == "success"){
            //Do something
        }
        else {
            // Do something
        }
    }
后端代码:
$r=”

$response

.str_重复(“.”,4096)。”

"; 忽略用户中止(true); 设置时间限制(0); ob_end_clean(); ob_start(); echo$r; 标题(“内容长度:”.ob_get_Length()); 标题(“连接:关闭”,true); 标题(“内容编码:无”); ob_end_flush(); 冲洗(); 前端代码: var iframe=document.getElementById(“uploaddocframe_u2;”+aid); var iframeobj=(iframe.contentWindow | | iframe.contentDocument); if(iframeobj.文档){ var iframedocument=iframeobj.document; var response=iframedocument.getElementById(“response”).innerHTML; 如果(响应=“成功”){ //做点什么 } 否则{ //做点什么 } }
在PHP代码中,添加内容类型标题:

header( 'Content-type: text/html; charset=utf-8' );