Доброе время суток.
Возникла следующая проблема:
как мне из CGI-cкрипта (например на перле) выводить текст в браузер, так чтобы, во-первых: текст отображался сразу как только выполнится соответствующая команда print; во-вторых: чтобы браузер не отваливался по тайм-ауту сколь долго бы не было вывода из CGI.
Так реализовано в gtchat'е вот только его нет в исходниках.
Заранее благодарен.
>так чтобы, во-первых: текст отображался
>сразу как только выполнится соответствующая
>команда print;$|=1; # поставить в начале скрипта.
>во-вторых: чтобы браузер
>не отваливался по тайм-ауту сколь
>долго бы не было вывода
>из CGI.
>Так реализовано в gtchat'е вот только
>его нет в исходниках.Вероятно стоят ограничения в апаче, например, у меня скриптам пользователей не разрешено выполняться более 1 мин.
>>так чтобы, во-первых: текст отображался
>>сразу как только выполнится соответствующая
>>команда print;
>
>$|=1; # поставить в начале скрипта.cтавил, не помогает. но и IMHO, это для вывода в файл
>
>>во-вторых: чтобы браузер
>>не отваливался по тайм-ауту сколь
>>долго бы не было вывода
>>из CGI.
>>Так реализовано в gtchat'е вот только
>>его нет в исходниках.
>
>Вероятно стоят ограничения в апаче, например,
>у меня скриптам пользователей не
>разрешено выполняться более 1 мин.
>
дык сам браузер отваливается даже если нет ограничения, может ему какое волшебное слово надо сказать в заголовке HTTP-ответа...
>>$|=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;
}
>>>$|=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;
>
>}