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