Как сбросить вывод после каждого вызова 'эха'?

У меня есть сценарий PHP, который только производит журналы для клиента.
Когда я повторяю что-то, я хочу, чтобы это было передано клиенту на лету.
(Поскольку, в то время как сценарий обрабатывает, страница является пробелом),
Я уже играл вокруг с ob_start() и ob_flush(), но они не работали.

Каково лучшее решение?

PS: это немного грязно для помещения сброса в конце echo звонить...

Править: Ни один Ответы не работал, PHP или Отказ Apache?

54
задан Paramone 22 November 2013 в 03:12
поделиться

4 ответа

Edit:

Я читал комментарии на странице руководства и наткнулся на ошибку, которая гласит, что ob_implicit_flush не работает и следующее обходное решение для этого:

ob_end_flush();

# CODE THAT NEEDS IMMEDIATE FLUSHING

ob_start();

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


Старый ответ:

Вы можете использовать ob_implicit_flush который скажет буферизации вывода отключить буферизацию на некоторое время:

ob_implicit_flush(true);

# CODE THAT NEEDS IMMEDIATE FLUSHING

ob_implicit_flush(false);
36
ответ дан 7 November 2019 в 07:38
поделиться

Правильная функция - flush () .

<html>
<body>
<p>
Hello! I am waiting for the next message...<br />
<?php flush(); sleep(5); ?>
I am the next message!<br />
<?php flush(); sleep(5); ?>
And I am the last message. Good bye.
</p>
</body>
</html>

Обратите внимание, что существует «проблема» с IE, который выводит очищенное содержимое, только если оно составляет не менее 256 байт, поэтому ваша первая часть страницы должна быть не менее 256 байт.

3
ответ дан 7 November 2019 в 07:38
поделиться

вам нужен метод flush . пример:

echo "log to client";
 flush();
7
ответ дан 7 November 2019 в 07:38
поделиться

Почему бы не сделать функцию для эха, например, такую:

function fecho($string) {
 echo $string;
 ob_flush();
}
5
ответ дан 7 November 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: