Проблема: использование неблокирующих сокетов в handler'е

Maxim Dounin mdounin at mdounin.ru
Thu Jul 24 19:42:29 MSD 2008


Hello!

On Thu, Jul 24, 2008 at 05:46:17PM -0700, Sergey Samokhin wrote:

> Здравствуйте.
>
> Монашёв Михаил wrote:
>> Здравствуйте, Сергей.
>>
>> поищите в этом листе ngx_mod_repeater . он делает похожие вещи
>>   
>
> Спасибо, нашел. Но он не использует неблокирующие сокеты для чтения  
> ответа от бакенда.
>
> Еще работа с сокетами есть в ngx_mail_proxy_module.c, но чтение вроде  
> блокирующее (ngx_mail_proxy_block_read())

Нет, в почтовом модуле чтение естественно без блокировок, а 
упомянутое название функции говорит о том что с данными от клиента 
делать ничего не надо когда она установлена обработчиком.  
Смотрите в код внимательнее.

Основная идея - поставить правильный c->read->handler (и 
c->write->handler), после чего в соответствующем обработчике
проделывать необходимые манипуляции.

Примеры можно найти в почтовом модуле, в собственно обработке http 
запросов, в ngx_http_upstream.c.

Maxim Dounin





More information about the nginx-ru mailing list