为什么Bitdefender会阻止刷新数据(PHP)?

时间:2014-10-31 20:32:44

标签: php flush

此代码打印结果在每次循环到浏览器之后。我的主机和本地主机上的工作。
但是在我的电脑上安装bitdefender total security 2015后无法正常工作(一次10秒后打印所有文字) 我在bitdefender中禁用防病毒和防火墙但没有解决 怎么解决这个? 演示:http://s2.uploadcloud.net/2.php

<!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />

            <script>
     var es;

    function startTask() {
        es = new EventSource('progress.php');

        //a message is received
        es.addEventListener('message', function(e) {
            var result = JSON.parse( e.data );

            addLog(result.message);       

            if(e.lastEventId == 'CLOSE') {
                addLog('Received CLOSE closing');
                es.close();
                var pBar = document.getElementById('progressor');
                pBar.value = pBar.max; //max out the progress bar
            }
            else {
                var pBar = document.getElementById('progressor');
                pBar.value = result.progress;
                var perc = document.getElementById('percentage');
                perc.innerHTML   = result.progress  + "%";
                perc.style.width = (Math.floor(pBar.clientWidth * (result.progress/100)) + 15) + 'px';
            }
        });

        es.addEventListener('error', function(e) {
            addLog('Error occurred');
            es.close();
        });
    }

    function stopTask() {
        es.close();
        addLog('Interrupted');
    }

    function addLog(message) {
        var r = document.getElementById('results');
        r.innerHTML += message + '<br>';
        r.scrollTop = r.scrollHeight;
    }
            </script>
        </head>
        <body>
              <br />
            <input type="button" onclick="startTask();"  value="Start Long Task" />
            <input type="button" onclick="stopTask();"  value="Stop Task" />
            <br />
            <br />

            <p>Results</p>
            <br />
            <div id="results" style="border:1px solid #000; padding:10px; width:300px; height:250px; overflow:auto; background:#eee;"></div>
            <br />

            <progress id='progressor' value="0" max='100' style=""></progress>  
            <span id="percentage" style="text-align:right; display:block; margin-top:5px;">0</span>
        </body>
    </html>

progress.php

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache'); 

function send_message($id, $message, $progress) {
    $d = array('message' => $message , 'progress' => $progress);
    echo "id: $id" . PHP_EOL;
    echo "data: " . json_encode($d) . PHP_EOL;
    echo PHP_EOL;
    ob_flush();
    flush();
}

//LONG RUNNING TASK
for($i = 1; $i <= 10; $i++) {
    send_message($i, 'on iteration ' . $i . ' of 10' , $i*10); 
    sleep(1);
}

send_message('CLOSE', 'Process complete');

1 个答案:

答案 0 :(得分:0)

BitDefender存在问题。他们现在解决了。