Я достиг этого раньше с помощью действительно простого решения:
ob_flush();
Все, что требовалось, - это создание одного div с соответствующими именами классов:
<div class="loading">
Loading...
</div>
Тогда мой PHP был в основном:
foreach ($sites as $site) {
printAndFlush(<<<CSS
<style>
div.loading {
background: url($site.png) no-repeat right center;
}
</style>
CSS;
scrapeSite($site);
}
При этом будет использоваться фоновый стиль, чтобы показать, какой сайт вы будете очищать.
Если вам нужно использовать разметку, вы можете просто каждый раз печатать новый div «Загрузка» (с уникальным идентификатором) вместе со стилем, чтобы установить стиль предыдущего div в «display: none».
Конечно, помните, что некоторые браузеры требуют по крайней мере 1024 байта (что-то 4k!) Перед рендерингом.