как правильно обновлять обработчики (без TERM)?

Igor Sysoev is at rambler-co.ru
Wed Aug 9 01:32:04 MSD 2006


On Wed, 9 Aug 2006, Kirill V Karatyshov wrote:

> nginx 0.3.49
> Первый вопрос -- есть ли способ перезагрузки обработчиков без жёсткого
> рестарта? Насколько я понял, по -HUP обработчики перезагружаются только если
> их переименовать (и изменить имена в конфиге), а TERM не всегда можно
> сказать (в каждый момент с сервера неск. сот человек чего-нибудь качают).

Что показывают "perl -V:usethreads" и "perl -V:usemultiplicity" ?

Похоже, повторный require не перекомпилирует перловые функции.
Можно попробвать два способа:

1) online upgrade: http://sysoev.ru/nginx/docs/control.html#upgrade

2) собрать perl c
    -Dusethreads или -Dusemultiplicity
При использовани этих параметров во время переконфигурации создаётся
новый перловый интерпертатор, в контексте которого выполняется require.
Без них всегда используется только один интерпертатор.

Но хочу предупредить, что ВСЕ перловые модули с бинарыми .so придётся
переустанавливать.

> Второе... захотелось написать небольшой обработчик для парсинга ссылок в
> shtml-файлах. Сами файлы выглядят примерно так:
>
> <!--#include virtual="/ssi/head.shtml"-->
> <!--#include virtual="./article.txt"-->
> <!--#include virtual="/ssi/foot.shtml"-->

А зачем ? Это же умеет делать
http://sysoev.ru/nginx/docs/http/ngx_http_ssi_module.html

и перл он умеет вызывать:
<!--# perl sub="модуль::функция" arg="параметр1" arg="параметр2" ... -->

> Собсно, написать написали, но вот прикрутить не смогли:
>
> perl_require /opt/home/shtmlparser.pm;
>
>   location ~* \.shtml$ {
>           perl shtmlparser::handler;
>       }
>
>
> в итоге такого, shtml файлы начали отдаваться без обрабтки ssi-команд (т.е.
> в виде, приведённом выше), т.е. видимо произошёл какой-то внутренний
> конфликт. Но самое интересное, что закомментировав эти строки и перезагрузив
> сервер по -HUP, обработчик заработал! Обнаружилось это случайно какое-то
> время спустя, и повторить не удалось, но то, что ссылки подсвечивались до
> след. перезагрузки -- это совершенно точно. В общем, как добиться
> адекватного поведения в данном случае?

"ssi on" случаем не использовался ?


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





More information about the nginx-ru mailing list