Столкнулся с непонятностью: демон на perl при обращении к нему через nginx выводит все и сразу и только после полной отработки скрипта. А должен и хочется, чтобы выводил построчно по мере генерации.
Код самого скрипта:~~~~~~~~~~~
#!/usr/bin/perluse strict;
use warnings;
use FCGI;
use Proc::Daemon;
use Proc::PID::File;$| = 1;
Proc::Daemon::Init();
if (Proc::PID::File->running()) {
print "Already running\n";
exit 0;
}my $socket = FCGI::OpenSocket(":9888", 5);
my $request = FCGI::Request(\*STDIN, \*STDOUT, \*STDERR, \%ENV, $socket);
while($request->Accept() >= 0) {
print "Content-Type: text/html\r\n\r\n";
print "Autoflush is currently ".($|?"on":"off").".
\n";
for ( 1..5 ) {
print "Value is $_.
\n";
sleep 1;
}
print "Autoflush is currently ".($|?"on":"off").".
\n";
};~~~~~~~~~~~
В конфиге nginx:
location ~* ^/ts/? {
fastcgi_pass localhost:9888;
}gzip отключен.
Подскажите, плз, ибо печаль. Должно же работать...
Попробуй еще добавить:> my $socket = FCGI::OpenSocket(":9888", 5);
$socket->autoflush();
> my $request = FCGI::Request(\*STDIN, \*STDOUT, \*STDERR, \%ENV, $socket);
> Попробуй еще добавить:
>> my $socket = FCGI::OpenSocket(":9888", 5);
> $socket->autoflush();
>> my $request = FCGI::Request(\*STDIN, \*STDOUT, \*STDERR, \%ENV, $socket);Пробовал. Не запускается в принципе. Ошибок не выводит (ибо не должен вроде вообще ничего выводить), ни в какие логи ничего не пишет.
>[оверквотинг удален]
> print "Autoflush is currently ".($|?"on":"off").".
> \n";
> };
> ~~~~~~~~~~~
> В конфиге nginx:
> location ~* ^/ts/? {
> fastcgi_pass localhost:9888;
> }
> gzip отключен.
> Подскажите, плз, ибо печаль. Должно же работать...не будет работать.
буферизация на нжынксе отключаема только для http-проксирования.