The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"FastCGI + nginx + autoflush"
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (Perl)
Изначальное сообщение [ Отслеживать ]

"FastCGI + nginx + autoflush"  +/
Сообщение от localhorst (ok) on 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 отключен.

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "FastCGI + nginx + autoflush"  +/
Сообщение от cryo (ok) on 23-Май-11, 13:27 
Попробуй еще добавить:

> my $socket = FCGI::OpenSocket(":9888", 5);

$socket->autoflush();

> my $request = FCGI::Request(\*STDIN, \*STDOUT, \*STDERR, \%ENV, $socket);

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "FastCGI + nginx + autoflush"  +/
Сообщение от PavelR (??) on 23-Май-11, 21:49 
>[оверквотинг удален]
>     print "Autoflush is currently ".($|?"on":"off").".
> \n";
> };
> ~~~~~~~~~~~
> В конфиге nginx:
>   location ~* ^/ts/? {
>       fastcgi_pass localhost:9888;
>   }
> gzip отключен.
> Подскажите, плз, ибо печаль. Должно же работать...

не будет работать.
буферизация на нжынксе отключаема только для http-проксирования.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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