nginx internals question

Igor Sysoev is at rambler-co.ru
Thu Aug 25 12:55:59 MSD 2005


On Thu, 25 Aug 2005, Konstantin Sorokin wrote:

> On Thu, Aug 25, 2005 at 12:14:00PM +0400, Igor Sysoev wrote:
>> On Thu, 25 Aug 2005, Konstantin Sorokin wrote:
>>
>>> On Mon, Aug 22, 2005 at 04:28:38PM +0400, Igor Sysoev wrote:
>>>> On Mon, 22 Aug 2005, Konstantin Sorokin wrote:
>>>>
>>>>> Игорь, а разумно ли будет использовать nginx'овую hash таблицу
>>>>> (core/ngx_hash.c) для организации хэшей в сотни тысяч элементов ?
>>>>> Судя по коду, сейчас она используется на небольшом количестве
>>>>> пар "ключ"  <---> "значение".
>>>>
>>>> Нет, текущая реализация подходит только для небольшого числа (сотни или
>>>> около
>>>> того) предопределённых элементов. Я планирую ещё сделать "ключ" ->"массив
>>>> значений". Кроме того, в nginx есть ещё пара хешей (extention -> mime
>>>> type и
>>>> имя сервера -> конфигурация), которые пока ещё не переехали на
>>>> core/ngx_hash.c.
>>>>
>>>
>>> Еще вопрос. Если мне надо завести некую сущность, но таким образом,
>>> чтобы она была своя для каждой копии worker'а, как это наиболее
>>> кошерно сделать ? Если использовать хук 'init process', то куда надо
>>> помещать указатель, на эту сущность и как с ней потом работать в
>>> фильтрах ?
>>
>> Сущность используется в нескольких фильтрах или только в том, где
>> она создавалась ? Если второе - то просто статический указатель в модуле.
>> Если первое, то нужно более подробное описание.
>
> Вот в этом и проблема, что пока не совсем ясно будет ли нужно использование
> из других модулей. Грубо говоря сущность -- это некая хэш таблица, которая
> будет динамически worker'ами пополняться в процессе работы. Возможно дальше
> захочется иметь к ней доступ и из других модулей.

На данный момент ничего такого нет. Ближе всего к этому механизм переменных.
Они, правда, per-request, но можно в переменную указатель на глобальный
хэш. Есть ещё одно "но", в переменной может хранится строка и
численное значение, а не произвольный указатель:

typedef struct {
     ngx_uint_t                     value;
     ngx_str_t                      text;
} ngx_http_variable_value_t;



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





More information about the nginx-ru mailing list