эхо от php "как оно идет" - PullRequest
3 голосов
/ 26 февраля 2011

как можно было распечатать результаты из php-скрипта во время печати до его завершения?я попытался поиграть с выходным буфером, поместив sleep () между echos для проверки, но результат всегда отображается после выполнения скрипта.Это тоже браузер?

Ответы [ 6 ]

4 голосов
/ 26 февраля 2011

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

HTTP-сервер имеет собственную буферизацию, и браузер не может мгновенно отображать каждый пакет, который он получает. Это похоже на длинный конвейер буферов на разных уровнях, которые нужно очистить, прежде чем вы увидите что-то в браузере, а выходной буфер PHP находится на самом высоком уровне.

3 голосов
/ 26 февраля 2011

да, вы можете сделать это таким образом

<?php
 echo "hello senad";
 flush();
 sleep(20);
 echo "meskin";
?>
1 голос
/ 28 октября 2013

Есть 2 решения:

1) Деактивировать буфер вывода в php.ini

2) При использовании циклов используйте это, например:

for ($i = 1; $i <= 3; $i++) {
  echo md5(rand())."<br />";
  flush(); 
  ob_end_flush();     
  sleep(1);
}
1 голос
/ 26 февраля 2011

PHP на стороне сервера.Если вы создаете веб-страницу, то результаты ВСЕГДА будут отображаться на клиенте после того, как скрипт завершится и будет передан.

Если вы запускаете скрипт на своем компьютере, то я где-то слышалпечатает во время выполнения, а другой - после завершения скрипта.Попробуйте переключиться между печатью и эхом и посмотрите, как пройдут ваши результаты.

0 голосов
/ 26 февраля 2011

Хороший вопрос .. когда я хочу сделать что-то подобное (например, действия входа в систему), я просто использую AJAX. И я знаю, что это, вероятно, не то, что вы хотели, но выслушайте меня ... У меня тоже была эта проблема 4 раза, и я использовал AJAX, и из-за этого я смог установить предварительный загрузчик (что действительно здорово и полезно :))

Под "использовать ajax" я имею в виду, если у вас есть 4 действия, чтобы показать, сделайте 4 запроса ajax. Я знаю, что это не самое элегантное решение (поскольку вы делаете много лишних вещей), но это хорошее решение с точки зрения дизайна.

0 голосов
/ 26 февраля 2011

PHP загружает страницу одновременно и отображает ее.Используйте flush(), чтобы показать вывод при загрузке скрипта.

...