Поблочный вывод действий на экран!

Статус
В этой теме нельзя размещать новые ответы.
Пожалуйста.
PHP:
<?php
$flush = str_repeat(' ', 4100);
for($i = 1; $i < 11; ++$i) {
	echo $i, $flush, '<br />';
	flush();
	sleep(1);
}
PS на винде может не работать.
Зависит не от ОС а от браузера.
Во многих случаях браузер ожидает окончания передачи страницы,
чтобы потом отобразить ее целиком.
Как следствие: пока страница не передалась целиком, нельзя рассчитывать на то, что у клиента на экране что-то меняется.
 
Во многих случаях браузер ожидает окончания передачи страницы,
чтобы потом отобразить ее целиком.
Как следствие: пока страница не передалась целиком, нельзя рассчитывать на то, что у клиента на экране что-то меняется.
Ну откуда ж ты такой грамотный взялся? Может стоит сначала взять и проверить прежде чем писать очередную ерунду?
Зависит не от ОС а от браузера.
Several servers, especially on Win32, will still buffer the output from your script until it terminates before transmitting the results to the browser.
Угадай откуда цитата.
 
Вы уже просто цепляетесь к словам,
я имел ввиду, что зависит
не только от ОС, но и от браузера,
и Ваша цитата это не опровергает.
Но, самое главное, по существу вопроса темы:
клиент может не увидеть ожидаемого программистом результата
и Ваш пример нельзя принимать как работающий.

Возникает вопрос, а нельзя ли организовать какое-то более сложное
взаимодействие сервера с клиентом, в котором сервер периодически посылает
клиенту какие-то законченные блоки, а клиент их отображает?
 
как вариант через ajax
 
  • Нравится
Реакции: zss
Случайно увидел в соседней теме
<meta HTTP-EQUIV="Refresh" Content="2; URL=xxx.php">
и сразу возникла идея, как решить искомую задачу на php.
Включаем такую сроку в xxx.php файл. В результате каждые 2 сек с
сервера будет запрашиваться этот же файл xxx.php.
А дальше дело техники. С помощью механизма сессий узнаем
время начала сессии и сообщаем клиенту
"Прошло xxxxx секунд"!!!!!
 
Вы уже просто цепляетесь к словам,
я имел ввиду, что зависит
не только от ОС, но и от браузера,
и Ваша цитата это не опровергает.
Но, самое главное, по существу вопроса темы:
клиент может не увидеть ожидаемого программистом результата
и Ваш пример нельзя принимать как работающий.
Возникает вопрос, а нельзя ли организовать какое-то более сложное
взаимодействие сервера с клиентом, в котором сервер периодически посылает
клиенту какие-то законченные блоки, а клиент их отображает?
1. садись - два, в цитате на писано не про браузер, а про сервер и ось.
2. принимать мой пример рабочим или нет - дело личное, только добавь к нему ИМХО, у меня пока не было увидеть его в нерабочем состоянии.
3. проверяй - прежде чем теоретизировать.
4. можно всё - хоть телегу с разбегу.

Уровень квалификации понятен, вопросов не имею, из темы удаляюсь.
 
  • Нравится
Реакции: zss
Вот работающий пример:
Код:
<html>
<head>
<title>Untitled Document</title>
<META http-equiv=Content-Type content=text/html;charset=windows-1251>
<meta HTTP-EQUIV="Refresh" Content="5; URL=<?php echo($_SERVER['PHP_SELF']);?>">
</head>
<body>
<?php
@session_start();
if(!$_SESSION['time'])
{
	$_SESSION['time']=time();
	$t=0;
}else
{
	$t=time()- $_SESSION['time'];
}
if($t<20)
{
	echo("<p>Прошло ".$t. " сек.</p>"); 
	echo("<p>Осталось ".(20-$t)." сек</p>");
}else
{
    echo("<p>Закончили ожидание</p>");
	session_destroy();
}
?>
</body>
</html>

Добавлено через 26 минут
А вот пример, который не работает именно из за браузера
(браузер не может отформатировать страницу, пока не дождется
окончания загрузки:(
Код:
<table>
<tr>
<td>
<?php
for($i = 1; $i < 11; ++$i) 
{
    echo("прошло $i сек.<br>");
    flush();
    sleep(1);
} 
?>
</td>
<td width=50>вторая колонка</td>
</tr>
</table>
 
Думалку включи - то, что не отрисовывается таблица, не значит, что пример не работает. Есть масса задач, где не требуется никаких таблиц, оформления, ничего, кроме вывода инфы на экран.
 
  • Нравится
Реакции: zss
Думалку включи - то, что не отрисовывается таблица, не значит, что пример не работает.
Не работает не Ваш пример, а именно тот, который я привел.

p.s. Кстати, а что Вы думаете про ограничение Вашего примера,
связанного с ограничением времени исполнения скрипта на сервере?
 
Да ничего не думаю: каждой задаче - своё решение.
Если я упрусь в time_execution_limit, то буду использовать ajax, так как постоянный рефреш страницы мне не доставляет, да и лишние запросы ни к чему.
 
  • Нравится
Реакции: zss
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху