Welcome! Log In Create A New Profile

Advanced

Re: Где лучше всего хранить состояние модуля?

Sergey Zhemzhitsky
March 04, 2013 05:02PM
Так, вроде бы разобрался.

init_process действительно то, что нужно.

Спасибо!

> Максим, большое спасибо за комментарии!

>> Так что если вы там, e.g., хотите создавать постоянные соединения с бекендом - то
>> делать это надо уже после старта рабочих процессов в них самих, а не при чтении конфига.

> А не подскажете, где лучше всего это делать.
> По исходникам и экспериментам, похоже, что callback init_process
> срабатывает как раз внутри воркера.


>> Hello!

>> On Mon, Mar 04, 2013 at 08:29:00AM +0400, Sergey Zhemzhitsky wrote:

>>> Привет, Nginx Гуру
>>>
>>> Модули к nginx никогда не разрабатывал, поэтому не пинайте сильно.
>>>
>>> Я пытаюсь написать nginx http-модуль к сторонней системе у которой есть С API.
>>> Под этим API лежит в том чесле и установка TCP/IP соединения.
>>>
>>> Насколько я понял, правильным способом подключения к сторонней системе была бы разработка unstream http модуля.
>>> Проблема в том, что протокол довольно сложный и в условиях ограниченного времени разбираться с ним некогда,
>>> поэтому хотелось бы попользовать API, которое предоставляет система.
>>>
>>> Посоветуйте, плиз, по следующим вопросам
>>>
>>> 1. Где лучше всего хранить объекты, которые должны быть созданы и инициализированы только один раз для куска конфигурации
>>> server или http?
>>> 2. Где лучше всего создавать объекты, которые должны присутствовать единожды для конфигурации server или http (например,
>>> устанавливать соединение со сторонней системой)?
>>> 3. Насколько я понял под upstream-ами *всегда* лежит асинхронное сокетное api. Верно?
>>> 4. Насколько плохо работать напрямую со своими TPC/IP соединениями прямо из request handler-ов?

>> In no particular order:

>> 1. Конфигурацию модуля, а также глобальные сущности с ней связанные -
>> правильнее всего хранить в, как это ни странно, конфиге модуля.

>> Надо, однако, иметь ввиду, что конфиг создаётся в master-процессе,
>> а потом при fork()'е наследуется в worker'ов. Так что если вы
>> там, e.g., хотите создавать постоянные соединения с бекендом - то
>> делать это надо уже после старта рабочих процессов в них самих, а
>> не при чтении конфига.

>> 2. Таки да, nginx - event-based сервер, и для работы со всем чем
>> можно - используются event-based API.

>> 3. Upstream - это точно такой же модуль, как и все остальные.
>> Если вы хотите написать свой модуль, аналогичный upstream'у, я бы
>> рекомендовал для начала посмотреть на upstream.

>> 4. Работать с сокетами из request handler'ов - не плохо. Работать
>> с ними в блокирующемся режиме - плохая идея.

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Где лучше всего хранить состояние модуля?

Sergey Zhemzhitsky March 03, 2013 11:30PM

Re: Где лучше всего хранить состояние модуля?

Maxim Dounin March 04, 2013 07:06AM

Re: Где лучше всего хранить состояние модуля?

Sergey Zhemzhitsky March 04, 2013 01:44PM

Re: Где лучше всего хранить состояние модуля?

Sergey Zhemzhitsky March 04, 2013 02:46PM

Re: Где лучше всего хранить состояние модуля?

Sergey Zhemzhitsky March 04, 2013 05:02PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 143
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready