Допустим, вы организовали циклическую отправку писем и хотите видеть, какое письмо отправляется в данный момент времени. Это можно организовать через неявную очистку буфера.
Неявная очистка приводит к тому, что очистка буфера будет выполнятся после каждой операции вывода в окно браузера (функциями echo, print и т.п.), поэтому явные вызовы функции flush() не понадобятся. Включение неявной очистки отключает буферизацию вывода, текущее содержимое буфера вывода будет отправлено, так как если бы вызывалась функция ob_end_flush().
Ниже пример, иллюстрирующий вывод текущего значения счётчика цикла. Также реализован progressbar выполнения цикла. Код примера приведен ниже.
< ?php set_time_limit(600); header("Expires: Tue, 1 Jul 2003 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Pragma: no-cache"); ob_implicit_flush(); ?> <style type="text/css"> #wrap {width:700px; margin:0px auto; } #display{ border:1px solid #ddd; padding:5px; text-align:left; height:100px; overflow-y:scroll } #progress {margin-top:5px; height:25px} body {font-family:Arial; text-align:center;} #progress {border:1px solid #496A71} #st_tab { background:#0066FF; border-right: 1px solid #AAAAAA } #st_tab td {text-align:center; color:#fff} </style> <script type="text/javascript"> function indicator(str, persent){ document.getElementById('display').innerHTML += str; document.getElementById('display').scrollTop += 24; document.getElementById('progressBar').innerHTML = persent + '%'; document.getElementById('st_tab').width = persent ? persent + '%' : '1'; } </script> <h1>Progress bar</h1> <div id="wrap"> <div id="display"></div> <div id="progress"> <table width="1" cellpadding="0" cellspacing="0" id="st_tab"> <tr> <td height=25 ID="progressBar"></td> </tr> </table> </div> </div> < ?php function indicator($str = '', $persent) { echo '<script>indicator("'.$str .'", '.$persent.')'; } $total = 1000; for($i = 0; $i < $total; $i++) { $persent = 100 - floor( (($total-$i)*100) / $total ); $str = '<div>'.$i.''; indicator($str, $persent); } ?>
Рабочий пример можно посмотреть здесь. Пример канечно не самый лучший и может работать не во всех браузерах но темне менее имеет место быть.