Как сделать постепенный вывод текста в пхп?

Discussion in 'PHP' started by bootsektor, 7 Jun 2010.

  1. bootsektor

    bootsektor New Member

    Joined:
    2 Jan 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    PHP:
    <?
    sleep (10);
    echo 
    "1";  ob_flush(); flush();


    sleep (10);
    echo 
    "2";  ob_flush(); flush();

    sleep (10);
    echo 
    "3";  ob_flush(); flush();


    ob_end_flush();
    ?>
    этот скрипт работает так что ждем 30 секунд и только потом появляеться 3 числа. а надо постепенно. как сделать? спасибо
     
  2. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    800
    Likes Received:
    145
    Reputations:
    73
    AJAX. http://ru.wikipedia.org/wiki/JQuery
     
    #2 LStr1ke, 7 Jun 2010
    Last edited: 7 Jun 2010
  3. spider-intruder

    spider-intruder Elder - Старейшина

    Joined:
    9 Dec 2005
    Messages:
    700
    Likes Received:
    339
    Reputations:
    37
    Code:
    function slow_echo($text,$time)
    {
    for($i=0;$i<strlen($text);$i++)
    	{
    	echo $text[$i];
    	sleep($time/strlen($text));
    	ob_flush(); flush(); 
    	}
    }
    
    Пример: slow_echo("12345",5);
    1 параметр строка
    2 параметр время. за которое она должна отобразиться.



    Хоят у меня в лисе и твой пример пашет нормально...
     
    #3 spider-intruder, 7 Jun 2010
    Last edited: 7 Jun 2010
  4. spider-intruder

    spider-intruder Elder - Старейшина

    Joined:
    9 Dec 2005
    Messages:
    700
    Likes Received:
    339
    Reputations:
    37
    Некоторые версии Microsoft Internet Explorer начинают отображать страницу только после получения 256 байт вывода, поэтому может понадобиться отправить дополнительные пробелы перед очисткой, чтобы такие браузеры вывели страницу.

    из мана по команде flush();
     
  5. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    скрипт из первого поста может не работать если в php.ini
    output_buffering поставлен больше чем выводимые за 1 этап данные (у тебя выводяться такие маленькие строки, что должно быть output_buffering = 0 )
    и должно быть вкл. flush:
    implicit_flush = On