ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Perl: Nginx



On 12/28/11, Dmitry E. Oboukhov <unera@xxxxxx> wrote:

> ngx_connector "1.2.3.4", 80, 15, sub {
>
> };
> ngx_connector "1.2.3.3", 80, 15, sub {
>
> };
> ngx_connector "1.2.3.5", 80, 15, sub {
>
> };

> в одном из них выясняется что два других нам уже не нужны (если они
> еще не выполнились).  Вопрос как остановить процесс установления
> коннекта?

Внутри:

    ngx_connector "1.2.3.5", 80, 15, sub {
        return NGX_CLOSE  if  $someone_already_responded;
        ...
    };

Этого должно быть достаточно, подключение может происходить успешно,
но возвращать ошибку сразу при попытке отправить данные или получить.
Т.е. все равно нужно ждать дольше.

http://zzzcpan.github.com/nginx-perl/Nginx.html#FLOW_CONTROL

> Или удалить процесс ngx_reader с сокета (и возможно заменить его
> другим)?

Можно переопределять сколько угодно раз, но только явно:

    ngx_reader $c, .. sub {
        ...
        ngx_reader $c, .. sub {
            ...
        };

        return NGX_READ;
    };

Т.е. весь flow будет выстроен в лесенку.
Но лесенка будет маленькая, т.к. ими можно управлять:

    my $min = 10;
    my $max = 10;
    my $timeout = 15;
    my $buf;

    ngx_reader $c, $buf, $min, $max, $timeout, sub {

        if ($something) {
            $min = 50;
            $max = 100;
            $timeout = 5;
            return NGX_READ;
        }
        ...
    };

> и что такое $c? обычный handler? то есть можно ли этим функциям
> подсовывать сокеты, которые открыты из perl'ового кода? Этот вопрос
> как-то не раскрыт остался

Это не сокет, это указатель на ngx_connection_t, который хранит в себе
все остальное.
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.