LINUX.ORG.RU

Apache modules question


0

0

Hi, All!

Собираюсь я тут написать модуль для апача.
Время обработки запросов, которые обрабатываются
этим модулем, достаточно велико (до нескольких
секунд).

Вопрос у меня следующий: обеспечивает ли апач
запуск модуля в отдельном процессе на каждый
запрос (как это сделано, например, в Java
Servlets), или я должен сам forkать процессы
внутри модуля?

Где об этом что-нибудь написано в apache docs?

Спасибо за внимание.

Best regards,
 Philip
anonymous

Apache использует preforked модель и форкать что-то самому обычно нет необходимости. Почитать можно в книгах по Apache и модулям, названий сейчас не помню, но если надо могу посмотреть. Между модулями apache и сервлетами нет ничего общего, так что аналогии можно не искать.

anonymous
()

Obhsya shema takova chto posle obrabotki neskolkih zaprosov process dolzhen umeret. Eto nastraivaetsya v konfige mozhno postavit 1 i budet na kazhdiy zapros svoi process no ne rekomnduyu. Luchshe vnimatelno posmotret chto delaet modul stolko vremeni .

master
()

Obhsya shema takova chto posle obrabotki neskolkih zaprosov process dolzhen umeret. Eto nastraivaetsya v konfige mozhno postavit 1 i budet na kazhdiy zapros svoi process no ne rekomnduyu. Luchshe vnimatelno posmotret chto delaet modul stolko vremeni .

master
()

1) http://httpd.apache.org/docs/ - куча полезных ссылок дающих общее представление. 2) dev.apache.org - надо обратить внимание на reference dictionary словарь API функций. 3) .h, .c из каталога src :-). Есть еще mod_example пример того как надо писать модули, но там много чего нет.

На счет процессов, так вот в конфиге есть опция - количество детей после старта, каждый ребенок - обработчик, и в один момент времени может обрабатывать только один запрос, ребенку передается обработка запроса, причем есть понятие handler который описывет апачевский модуль. Есть понятие pool - куча из которой берется память (вообще то их несколько но в доках см. вышем описаны различия и способы употребления) так вот, грубо, на каждый запрос выделяется новый pool соответственно все данные которые были сохранены в request pool предидущего запроса теряются.

P.S. Если не секрет что за задача?

fire
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.