2013-04-23 3 views
4

Я хочу, чтобы выходное эхо в браузере (каждый раз) до выполнения функции ожидания выполнялось.PHP эхо до функции сна, не работает

следующий код не работает

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 секунд.

и продолжить ...

возможно эхо один на один без функции str_repeat(), поэтому выход не отображается каждый раз.

+0

Возможно, вам потребуется очистить выходной буфер. 'Ob_flush()'? –

+0

@ J.D.Pace Я использую 'ob_flush();' после эха или нужно поставить другое место –

ответ

11

Пробуйте использовать следующий код и его работу.

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(); 
} 
1

Даже выходной буфер (ob_ * функции) не обязательно дает вывод в браузер напрямую.

Сначала попробуйте позвонить flush() до или после ob_flush().

Во-вторых, посмотрите, включено ли mod_gzip или zlib.output_compression, например. Это также будет буферизовать весь вывод.

Если вы используете сервер IIS, а не Apache, в IIS также могут быть настройки для проверки.

+0

Я пробовал 'flush()' до и после 'ob_flush()' его не работает. –

+0

@RSSisodiya Итак, как я уже сказал, chkeck mod_gzip и zlib.output_compression. Сделайте 'phpinfo()' и проверьте, что _SERVER ["HTTP_ACCEPT_ENCODING"] делает gzip и проверяет, включено ли zlib.output_compression. Они заблокируют прямой вывод –

+0

'$ _SERVER [" HTTP_ACCEPT_ENCODING "]'. return gzip, deflate. –

Смежные вопросы