Можно ли получить небуферизованный вывод в веб-браузере? - PullRequest
0 голосов
/ 28 мая 2009

У меня есть небольшой скрипт cgi, который выбирает и проверяет файл конфигурации для Nagios. Типичное время выполнения составляет несколько минут, и я хотел бы получить некоторую обратную связь в браузере во время выполнения.

Чтобы проиллюстрировать, что я хотел бы случиться, рассмотрим это:

#!/bin/sh
echo "Content-type: text/plain"
echo

for i in A B C D E
do
        echo $i
        sleep 10
done

Когда я выполняю GET для этого скрипта через telnet или с помощью wget, вывод происходит по одной строке за раз с интервалом в десять секунд («A» ... «B» ... «C» ... и скоро).

Когда я пытаюсь открыть его в обычном браузере, браузер, похоже, буферизирует его все и выдает выходные данные после завершения сценария (50 секунд молчания ... "ABCDE").

Можно ли заставить браузер представлять данные пользователю сразу после его поступления?

Ответы [ 3 ]

2 голосов
/ 29 мая 2009

Я считаю, что вы хотите использовать "html chunk encoding". Это позволяет серверу отправлять браузеру «кусок» HTML, который он может начать отображать. ASP & ASP.Net позаботится об этом каждый раз, когда вы используете «Response.Write».

Вот несколько ссылок:

1 голос
/ 28 мая 2009

Использование Wireshark .

0 голосов
/ 24 сентября 2009

Используйте Response.Flush () после того, как вы достаточно записали в буфер ответов ....

http://www.stephanunrau.com/

...