flush () Не отображает вывод в PHP?

У меня есть этот код:

set_time_limit(0); header("Cache-Control: no-cache, must-revalidate"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); ob_flush(); flush(); $start = time(); $secs = time() - $start; while ($secs <= 300) { echo "this script has been running for $secs seconds.\n"; ob_flush(); flush(); sleep(1); } 

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

  • Скрипт работает 1 секунда.
  • Сценарий работает 2 секунды.
  • …………
  • Скрипт работает 300 секунд.

Вместо этого я получаю пустое окно с непрерывным значком «загрузка» в течение 5 минут, и через 5 минут внезапно меня обрушивают нагрузкой этих сообщений, которые я должен был получать по одному сообщению за раз.

Может кто-нибудь объяснить, что я делаю неправильно?

ob_flush не flush . ob_flush очищает ob_flush буфер объекта. Поскольку у вас нет открытого буфера объектов, ничего не очищается.

Кроме того, веб-браузеры и программное обеспечение веб-сервера известны тем, что поддерживают данные до тех пор, пока они не будут выведены. Убедитесь, что GZIPing выключен и что вы используете разумный браузер.