Re: Выполнение блокируемых вызовов в модуле

Valery Kholodkov valery+nginxru на grid.net.ru
Пн Июн 14 18:43:40 MSD 2010


----- Invar <nginx-forum at nginx.us> wrote:
> Добрый день.
> 
> Необходимо создать модуль, который в процессе работы будет обращаться к memcached/MySQL. Надо избежать блокировок worker'а во время выполнения запросов. Каким образом можно реализовать подобный модуль ?
> 
> Приостановить выполнение запроса (вернув NGX_AGAIN), но как выполнить обращения к базе ? в отдельном потоке ? Тогда невозможно будет пользоваться ngx_log_error, ngx_log_debug и прочими функциями nginx.
> 
> В каком направлении лучше искать ? Может кто-то уже реализовывал подобные задачи ?

Модули для работы с memcached уже существуют, причем как на чтение, так и на запись.

Принцип создания неблокирующего модуля для хождения в MySQL долго объяснять, проще показать исходник. Проблема в том, что в моей версии не решена одна достаточно нетривиальная задача. Но её можно попытаться решить введя некоторые ограничения.

Поэтому неплохо бы узнать, зачем Вы хотите ходить в MySQL?

-- 
Regards,
Valery Kholodkov


Подробная информация о списке рассылки nginx-ru