вывод php со сном ()

Я пытаюсь выполнить цикл каждую секунду в течение 25 секунд в основном.

for($i = 0; $i <= 25; $i += 1){ 
    echo $i;
    sleep(1)
}

Вещь - это, не производит, пока это полностью не сделано, поэтому после того, как цикл продолжается 25 раз. Существует ли способ сделать это так, он произведет перед каждым сном? и не ожидают, пока полный цикл не завершен?

Спасибо!

6
задан dzm 10 August 2010 в 00:42
поделиться

1 ответ

Вызов flush заставит PHP чтобы передать клиенту весь выходной буфер, прежде чем продолжить.

for($i = 0; $i <= 25; $i += 1){ 
    echo $i;
    flush();
    sleep(1);
}

РЕДАКТИРОВАТЬ:

После тестирования этого на моем сервере lighttpd я заметил, что он буферизует мои выходные данные блоками по 4096 символов, и я предполагаю, что другой браузер может иметь аналогичные схемы буферизации. Также GZIP может полностью предотвратить flush . К сожалению, проверить его работу невозможно из-за природы HTTP.

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

4
ответ дан 8 December 2019 в 14:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: