У меня есть этот код:
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); }
То, что я хотел бы сделать, когда я просматриваю эту страницу, заключается в том, чтобы увидеть в реальном времени, сколько времени работает скрипт, например:
Вместо этого я получаю пустое окно с непрерывным значком «загрузка» в течение 5 минут, и через 5 минут внезапно меня обрушивают нагрузкой этих сообщений, которые я должен был получать по одному сообщению за раз.
Может кто-нибудь объяснить, что я делаю неправильно?
ob_flush
не flush
. ob_flush
очищает ob_flush
буфер объекта. Поскольку у вас нет открытого буфера объектов, ничего не очищается.
Кроме того, веб-браузеры и программное обеспечение веб-сервера известны тем, что поддерживают данные до тех пор, пока они не будут выведены. Убедитесь, что GZIPing выключен и что вы используете разумный браузер.