циклы — Почему не работает flush (и / или ob_flush)?

Самоочевидно, НО не работает …

Просто хочу повторять $ j каждую секунду …

ob_implicit_flush();
ob_end_flush();
ob_start();

for ($j=0;$j<=9;$j++){
echo $j.'<br>';
flush();
ob_flush();
sleep(1);
}

Любая идея ?

0

Решение

Буфер PHP — только один из многих.

Сервер может буферизовать вывод, а некоторые браузеры буферизуют ввод, поэтому он не пытается перерисовать всю страницу для каждого полученного байта.

Как правило, вы должны никогда использование sleep во всем, что будет вызывать браузер, потому что он просто просит атаковать DoS, правда …

Так что в основном этот ответ говорит вам «не делай этого». Конечно, есть лучший способ сделать то, что вы делаете, начиная с простого, как JavaScript:

<div id="counter"></div>
<script type="text/javascript">
(function() {
var count = 0, box = document.getElementById('counter');
function step() {
box.appendChild(document.createTextNode(count));
box.appendChild(document.createElement('br'));
count++;
if( count <= 9) setTimeout(step,1);
}
step();
})();
</script>
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]