Я пытаюсь выполнить цикл каждую секунду в течение 25 секунд в основном.
for($i = 0; $i <= 25; $i += 1){
echo $i;
sleep(1)
}
Вещь - это, не производит, пока это полностью не сделано, поэтому после того, как цикл продолжается 25 раз. Существует ли способ сделать это так, он произведет перед каждым сном? и не ожидают, пока полный цикл не завершен?
Спасибо!
Вызов flush
заставит PHP чтобы передать клиенту весь выходной буфер, прежде чем продолжить.
for($i = 0; $i <= 25; $i += 1){
echo $i;
flush();
sleep(1);
}
РЕДАКТИРОВАТЬ:
После тестирования этого на моем сервере lighttpd я заметил, что он буферизует мои выходные данные блоками по 4096 символов, и я предполагаю, что другой браузер может иметь аналогичные схемы буферизации. Также GZIP может полностью предотвратить flush
. К сожалению, проверить его работу невозможно из-за природы HTTP.
Еще одна проблема с этой стратегией заключается в том, что она оставляет процесс PHP заблокированным для других запросов. Это может вызвать накопление запросов.