Почему не работает функция flush()?
если коротко - использовать флаш кака, и есть куча мест где вывод еще буферизуется, начиная от браузера и заканчивая настройками кеширования/буферизации/метода сжатия вебсервера.
А если так? echo "<h3>Please waiting for 10 seconds...</h3>";

ob_implicit_flush(1);

for($i=0; $i<10; $i++){
    echo $i . '<br>';
    echo str_repeat(' ',1024*64);

    sleep(1);
}

echo "<h3>Thx!</h3>";
exit;