URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 488
[ Назад ]

Исходное сообщение
"вывод из CGI не закрывая соеденения"

Отправлено Dias , 02-Апр-02 20:33 
Доброе время суток.
Возникла следующая проблема:
как мне из CGI-cкрипта (например на перле) выводить текст в браузер, так чтобы, во-первых: текст отображался сразу как только выполнится соответствующая команда print; во-вторых: чтобы браузер не отваливался по тайм-ауту сколь долго бы не было вывода из CGI.
Так реализовано в gtchat'е вот только его нет в исходниках.
Заранее благодарен.

Содержание

Сообщения в этом обсуждении
"RE: вывод из CGI не закрывая соеденения"
Отправлено uldus , 03-Апр-02 10:17 
>так чтобы, во-первых: текст отображался
>сразу как только выполнится соответствующая
>команда print;

$|=1; # поставить в начале скрипта.

>во-вторых: чтобы браузер
>не отваливался по тайм-ауту сколь
>долго бы не было вывода
>из CGI.
>Так реализовано в gtchat'е вот только
>его нет в исходниках.

Вероятно стоят ограничения в апаче, например, у меня скриптам пользователей не разрешено выполняться более 1 мин.


"RE: вывод из CGI не закрывая соеденения"
Отправлено Dias , 03-Апр-02 11:28 
>>так чтобы, во-первых: текст отображался
>>сразу как только выполнится соответствующая
>>команда print;
>
>$|=1; # поставить в начале скрипта.

cтавил, не помогает. но и IMHO, это для вывода в файл

>
>>во-вторых: чтобы браузер
>>не отваливался по тайм-ауту сколь
>>долго бы не было вывода
>>из CGI.
>>Так реализовано в gtchat'е вот только
>>его нет в исходниках.
>
>Вероятно стоят ограничения в апаче, например,
>у меня скриптам пользователей не
>разрешено выполняться более 1 мин.
>
дык сам браузер отваливается даже если нет ограничения, может ему какое волшебное слово надо сказать в заголовке HTTP-ответа...



"RE: вывод из CGI не закрывая соеденения"
Отправлено uldus , 03-Апр-02 15:25 
>>$|=1; # поставить в начале скрипта.
>
>cтавил, не помогает. но и IMHO,
>это для вывода в файл

STDIN/STDOUT тоже есть "файл". Значит не так или не там ставил.

>дык сам браузер отваливается даже если
>нет ограничения, может ему какое
>волшебное слово надо сказать в
>заголовке HTTP-ответа...

Разве что поставить:
Cache-Control: no-cache
Pragma: no-cache

Браузер не отваливается, если соединение не разорвано, специально проверил перед отправкой сообщения - минут 30 минимум провисел:

#!/usr/local/bin/perl
$|=1;
print "Cache-Control: no-cache\n";
print "Pragma: no-cache\n";
print "Content-type: text/plain\n\n";
while (1){
    print "test\n";
    sleep 1000;
}


"RE: вывод из CGI не закрывая соеденения"
Отправлено Dias , 03-Апр-02 16:31 
>>>$|=1; # поставить в начале скрипта.
>>
>>cтавил, не помогает. но и IMHO,
>>это для вывода в файл
>
>STDIN/STDOUT тоже есть "файл". Значит не
>так или не там ставил.
>
>
>>дык сам браузер отваливается даже если
>>нет ограничения, может ему какое
>>волшебное слово надо сказать в
>>заголовке HTTP-ответа...
>
>Разве что поставить:
>Cache-Control: no-cache
>Pragma: no-cache

вот что мне помогло:
HTTP/1.0 200 Okay

вот только пришлось скрипту дать имя начинающееся с nph
думал это в апачевских конфигах задается, но не нашел в них даже упоминания про nph :(


вот сейчас смотрю как это будет выглядеть через прокси.....
>Браузер не отваливается, если соединение не
>разорвано, специально проверил перед отправкой
>сообщения - минут 30 минимум
>провисел:
>
>#!/usr/local/bin/perl
>$|=1;
>print "Cache-Control: no-cache\n";
>print "Pragma: no-cache\n";
>print "Content-type: text/plain\n\n";
>while (1){
>    print "test\n";
>
>    sleep 1000;
>
>}