The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
FastCGI + nginx + autoflush, !*! localhorst, 23-Май-11, 12:37  [смотреть все]
Столкнулся с непонятностью: демон на perl при обращении к нему через nginx выводит все и сразу и только после полной отработки скрипта. А должен и хочется, чтобы выводил построчно по мере генерации.
Код самого скрипта:

~~~~~~~~~~~
#!/usr/bin/perl

use 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 отключен.

Подскажите, плз, ибо печаль. Должно же работать...

  • FastCGI + nginx + autoflush, !*! cryo, 13:27 , 23-Май-11 (1)
    • FastCGI + nginx + autoflush, !*! localhorst, 13:37 , 23-Май-11 (2)
      > Попробуй еще добавить:
      >> my $socket = FCGI::OpenSocket(":9888", 5);
      >  $socket->autoflush();
      >> my $request = FCGI::Request(\*STDIN, \*STDOUT, \*STDERR, \%ENV, $socket);

      Пробовал. Не запускается в принципе. Ошибок не выводит (ибо не должен вроде вообще ничего выводить), ни в какие логи ничего не пишет.

  • FastCGI + nginx + autoflush, !*! PavelR, 21:49 , 23-Май-11 (3)



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру