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

Статус
В этой теме нельзя размещать новые ответы.

phillip

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

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

(PHP 3, PHP 4)

flush - очищает буфер вывода.

Описание

void flush (void)

Очищает буфер вывода PHP и всё используемое PHP (CGI, web-сервер и т.д.). Она активно пытается выдать весь вывод в браузер пользователя.
Примечание: flush() не действует на схему буферизации вашего web-сервера или браузера - на стороне клиента.

Некоторые серверы, особенно под Win32, будут, тем не менее, продолжать буферизовать вывод вашего скрипта, пока он не закончит работу перед передачей результатов в браузер.

Серверные модули для Apache, вроде mod_gzip, могут сами выполнять буферизацию, что не даст немедленной пересылки данных из функции flush() клиенту.

Даже браузер может буферизовать свой ввод до отображения. Netscape, например, буферизует текст, пока не получит end-of-line или начало тэга, и не будет отображать таблицы, пока не увидит тэга </table> самой внешней таблицы.

Некоторые версии Microsoft Internet Explorer начинают отображать страницу только после получения 256 байт вывода, поэтому вам может понадобиться отправить дополнительные пробелы перед очисткой, чтобы такие браузеры вывели страницу.
ты на локалхосте пробуешь?
 
запарился искать в опере опцию которая заставит ее работать как 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);
	}
?>

может кому поможет?
 
ну тогда сделайте связку ajax+php и по таймеру в секунду выводите отдельный запрос по id ... муторно, но кроссбраузерно =))
 
Есть скрипт с циклом, допустим такой:

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

пхп выполняется на сервере и сразу отдается в браузер, у тебя нет никаких условий остановки срипта,
то что тебе нужно, надо делать через JS
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху