2009-05-28 4 views
-1

У меня есть небольшой скрипт 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»).

Возможно ли, чтобы браузер представил данные пользователю, как только он прибыл?

ответ

2

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

Вот некоторые ссылки:

+0

Точно, что я искал, спасибо Дэвиду! –

1

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

+0

Спасибо за отзыв, нюхание заставило меня понять, что gzip/deflate encoding заставил сервер отправлять весь вывод в одном пакете. После отмены заголовка Accept-Encoding данные поступают в виде нескольких пакетов. Однако поведение браузера одинаково - ничего не отображается, пока соединение не будет закрыто. –

0

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

http://www.stephanunrau.com/

Смежные вопросы