API

Igor Sysoev is at rambler-co.ru
Fri May 27 15:24:54 MSD 2005


On Wed, 25 May 2005, Alexey Bestciokov wrote:

> ага, понятно, механизм переменных видимо именно то что нужно !
>
> а что из имеющихся средств подходит для реализации обработчика
> переменной ? он же как то должен встаиваться в общий цикл обработки -
> иначе будет лочить воркер пока не получит результат от memcached ...

Использовать что-то типа ngx_http_upstream в данном случае не имеет смысла.
Нужно вызвать ngx_event_connect() для соединения, а потом читать данные.
В нужных местах ставить ngx_add_event()/ngx_del_event().

Я тут подумал - одно соедиение сделать не получится, нужно много, но
кэшируемых.

> IS> On Tue, 24 May 2005, Alexey Bestciokov wrote:
>
>>> хочется[нужно] написать модуль котороый будет коннектицца к memcached и
>>> вытаскивать оттуда некоторые переменные (на основании id из куки плюс
>>> predefined ) - чтобы потом использовать их в ssi.
>>>
>>> исходя из этого по идее модуль должен быть фильтром и вставать в
>>> цепочку перед ssi, но, как я понял, для общения с "внешними" серверами модуль должен
>>> быть "конечным" обработчиком http запроса и ставить себя в
>>> content_handler, во всяком случае если использовать механизм
>>> ngx_http_upstream - то есть его можно бужет вызвать
>>> субреквестом и вставить полученные данные в нужные места, но, если я
>>> правильно понял, это лишнее соединение с memcached сервером на каждый
>>> запрос, ну и дублирование обработки данных полученных от него.
>>>
>>> есть ли на данный момент какой либо механим который позволит это
>>> сделать по другому и с минимальными затратами ?
>>>
>>> или я вообще всё неправильно понял ?
>
> IS> Насчёт ngx_http_upstream и прочего - верно. Соединения в принципе можно
> IS> кэшировать, но пока это не реализовано.
>
> IS> Однако, если нужны только переменные, то можно использовать механизм
> IS> переменных, например, как сделано в ngx_http_geo_module,
> IS> ngx_http_proxy_module, ngx_http_fastcgi_module и прочих. Модуль
> IS> регистрирует нужные имена переменных с помощью ngx_http_add_variable().
> IS> Обработчик переменной при первом же обращении соединяется с memcached.
> IS> Это соединение остаётся постоянным до тех пор, пока memcached его не закроет.
>
> IS> Кстати, возможно, поддержка memcached в таком виде со временем появится.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list