Выводить промежуточные результаты выполнения скрипта

Тема в разделе "PHP", создана пользователем phillip, 20 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    Есть скрипт с циклом, допустим такой:

    Код:
    <?php
    foreach($texts as $text){
    echo $text;
    }
    ?>
    Мне нужно сделать чтобы он выполнил echo $text; и только потом вернулся к началу цикла. Тогда у меня получится что отобразится сначала один $text потом спустя некоторое время работы скрипта- второй $text, затем третий и так до конца. А в настоящее время у меня сначала целиком выполняется скрипт, и потом я только в итоге получаю за раз все $text.
    Подскажите как правильно сделать
     
  2. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    PHP:
    <?php
    foreach($texts as $text){
    echo 
    $text;
    flush();
    }
    ?>
     
    RolCom, phillip и Stom нравится это.
  3. Stom

    Stom Писатель

    Регистр.:
    28 дек 2007
    Сообщения:
    4
    Симпатии:
    0
    пасип, тоже пригодилось
     
  4. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    не помогло( выводит все за раз
     
  5. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    236
    Симпатии:
    60
    какой браузер?
    в Firefox работает,
    а в опере и IE нет.
     
  6. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    Тут уже обсуждалась эта тема! Такую реализацию лучше всего выполнять на perl.
     
  7. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    выдержка из док-ции php:
    ты на локалхосте пробуешь?
     
  8. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    236
    Симпатии:
    60
    запарился искать в опере опцию которая заставит ее работать как FF.
    Интересно она вообще есть? вроде 6-ая опера умела рендерить по мере выдачи.

    а вот JS скрипты они выполняют сразу же.
    Вот , работает и в опере и в IE:
    PHP:
    <html>
    <body>
    <div id='test'></div>
    </body>
    </html>
    <script type="text/javascript">
    var testdiv = document.getElementById('test');
    </script>
    <?
    set_time_limit(0);

    $texts ="Эта функция включает буферизацию вывода. Если буферизация вывода активна, никакой вывод скрипта не высылается (кроме шапок/headers); вывод сохраняется во внутреннем буфере.
    Содержимое этого внутреннего буфера может быть скопировано в строковую переменную с использованием ob_get_contents(). Для вывода содержимого этого внутреннего буфера используйте ob_end_flush(). Альтернативно ob_end_clean() втихую отбрасывает содержимое буфера.";

    $texts = explode(" ",$texts);

    foreach($texts as $text)
        {
        echo "<script type=\"text/javascript\">
            testdiv.innerHTML += \"".$text." \";
            </script>";
        flush();
        sleep(1);
        }
    ?>
    может кому поможет?
     
  9. [Гилыч]

    [Гилыч] Постоялец

    Регистр.:
    5 авг 2008
    Сообщения:
    57
    Симпатии:
    17
    ну тогда сделайте связку ajax+php и по таймеру в секунду выводите отдельный запрос по id ... муторно, но кроссбраузерно =))
     
  10. alexzander69

    alexzander69 Постоялец

    Регистр.:
    27 май 2008
    Сообщения:
    95
    Симпатии:
    46
    пхп выполняется на сервере и сразу отдается в браузер, у тебя нет никаких условий остановки срипта,
    то что тебе нужно, надо делать через JS
     
Статус темы:
Закрыта.