| Nginx-ru mailing list archive (nginx-ru@sysoev.ru) [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
 Проблема: использовани е неблокирующих сокетов в  handler'е
 
To: nginx-ru@xxxxxxxxxSubject: Проблема: использовани е неблокирующих сокетов в  handler'еFrom: Sergey Samokhin <neavirc@xxxxxxxxx>Date: Mon, 21 Jul 2008 14:03:44 -0700Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed;        d=gmail.com; s=gamma;        h=domainkey-signature:received:received:message-id:date:from         :user-agent:mime-version:to:subject:content-type         :content-transfer-encoding;        bh=xs1nlzzDUHwD/2PZml6tFVtTm27vhFH4rz3m0t08HcY=;        b=WcWwGWIOFZKzID1XeovhXIsRI5z0K39y9oFCuKYqaOTvaOcM+LxkZkKVZWi8a9Ezn9         zeFNxDed8cHGo5Isexj9GP6NxprIisTmYZhEB6uwum2eySgj23BCUWH91eFIN99m6LgN         Ldq2inpKx88eiJETipMnsX34nA2jGshfOsBZA=Domainkey-signature: a=rsa-sha1; c=nofws;        d=gmail.com; s=gamma;        h=message-id:date:from:user-agent:mime-version:to:subject         :content-type:content-transfer-encoding;        b=bztz7qMFiZBQtSs+8mh3wDOqpOYGcC1LL79h8+jeKpDnyrTTc9aEPLQQs6lcAQyhsL         zhDnnEEPgojZRmAzqWSYks1yDuvCbZKgXLwZWzYEGX9a9W3q7lVKdU7KQ5ugDitzyJ01         Pd5sRkp8t0QBrBLRxuCwbt+QWhAVoFFAdI0FU= 
 
Здравствуйте.
Есть модуль, который в своем обработчике отправляет стороннему приложению
некоторую информацию о запросе (заголовки и пр.) используя блокирующие 
сокеты. 
После этого модуль получает ответ от приложения, и используя его 
генерирует response 
для пользователя.
Очень хочется заменить блокирующие сокеты на неблокирующие, т.к. 
организовать 
работу модуля примерно так:
1. Получив запрос от пользователя воркер отсылает данные через 
неблокирующий сокет 
   и переключается к следующему запросу, не обрывая соединения с клиентом
2. Когда стороннее приложение ответило на запрос, отправленный в п. 1 
nginx возвращается
    к состоянию п.1 и используя полученные данные генерирует ответ для 
пользователя и 
    закрывает соединение
Я пока очень смутно представляю как это можно было бы реализовать :/
Если такое уже где-то реализовано в nginx, то подскажите в какие 
модули/функции посмотреть =)
Нужно ли использовать какие-то nginx'овские обертки над сокетами (типа 
ngx_event_connect)? 
Спасибо.
--
С уважением,
Сергей.
 
 |