[Moscow.pm] nginx-perl prerelease 1.1.6.1
Alexandr Gomoliako
zzz на zzz.org.ua
Сб Ноя 12 08:11:52 PST 2011
On 11/12/11, Ruslan Zakirov <ruz at bestpractical.com> wrote:
> 2011/11/12 Yury Pats <yu.pats at gmail.com>:
>> В перспективе nginx-perl сможет заменить mod_perl и apache?
Тут смысл совсем не в функционале модперла апача, а чтобы
можно было запустить что-то в бэкграунде, отправлять запрос
параллельно на несколько бэкендов, создавать очереди
соединений и т.д.
> Врядли. Блокировать это дело нельзя.
Блокировать можно, ничего страшного в этом нет. Просто запускайте
больше воркеров. Никаких проблем, а только больше удобства.
> Юра, если ты не испольщуешь что-то кроме ResponeHandler, то нет
> никакого смысла испольовать mod_perl. Просто перейти на FCGI. Тогда не
> нужен обратный прокси и легко переключиться на другой сервер.
Или уже PSGI, Миягава упорно его развивает http://plackperl.org/
Если посмотрите на асинхронные PSGI северы Feersum и Twiggy, то они
точно так же блокируют воркер при работе с DBI или чем-то таким.
На счет внедрения в AE, то тут API выше уровня, т.е. нет колбэков,
когда можно что-то читать, а только, когда уже полностью прочитано
в указанный буффер.
Да и зачем, наоборот хотелось простоты. Т.е. грубо, создали коннектор,
подключились, создали в колбеке ридер и вернули NGX_READ
из колбэка коннектора, т.е. следующая операция: чтение.
И когда буфер ридера заполнится, вызовется его колбэк.
По-моему достаточно просто.
Кто не заглядывал в код, то вот как выглядит минимально возможный
HTTP 1.0 запрос:
my $ip = '1.2.3.4';
my $port = 80;
my $timeout = 15;
my $buf = "GET / HTTP/1.0\x0d\x0aHost: asdf\x0d\x0a\x0d\x0a";
ngx_connector $ip, $port, $timeout, sub {
return NGX_CLOSE
if $!;
my $c = shift;
ngx_writer $c, $buf, $timeout, sub {
return NGX_CLOSE
if $!;
$buf = '';
return NGX_READ;
};
ngx_reader $c, $buf, 0, 0, $timeout, sub {
return NGX_READ
unless $!;
warn "response: $buf\n";
return NGX_CLOSE;
};
return NGX_WRITE;
};
Подробная информация о списке рассылки Moscow-pm