Я хочу, чтобы выходное эхо в браузере (каждый раз) перед выполнением функции сна.
следующий код не работает
set_time_limit(0); ob_implicit_flush(1); ob_start(); echo "Start<Br>"; ob_flush(); for($i=0;$i<10;$i++){ $randSlp=rand(1,3); echo "Sleeping for ".$randSlp." second. "; ob_flush(); sleep($randSlp); } ob_end_flush();
если функция str_repeat
чем в браузере
Первый раз: Начните спящий на 1 секунду. Спящий на 3 секунды.
Второй раз: спать 2 секунды. Спящий на 2 секунды.
и продолжить …
возможно echo один за другим без функции str_repeat (), почему вывод не отображается каждый раз.
Попробуйте выполнить следующий код и его работу.
header( 'Content-type: text/html; charset=utf-8' ); header("Cache-Control: no-cache, must-revalidate"); header ("Pragma: no-cache"); set_time_limit(0); ob_implicit_flush(1); //apache_setenv('no-gzip', 1); //ini_set('zlib.output_compression', 0); //ini_set('implicit_flush', 1); for ($i = 0; $i < 10; $i++) { $randSlp=rand(1,3); echo "Sleeping for ".$randSlp." second. ";; sleep(1); if(ob_get_level()>0) ob_end_flush(); }
даже выходной буфер (ob_ * функции) не обязательно дает вывод в браузер напрямую.
Сначала попробуйте вызвать flush()
до или после ob_flush()
.
Во-вторых, посмотрите, например, включено ли mod_gzip или zlib.output_compression. Это также будет буферизовать весь вывод.
Если вы используете сервер IIS, а не Apache, в IIS также могут быть настройки для проверки.