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

Kirill V Karatyshov kk at nthost.ru
Wed Aug 9 01:52:14 MSD 2006


Про perl понятно, попробуем. Про ssi, наверно я невнятно выразился --
писался не обработчик SSI-инструкций, а обработчик http-ссылок в 
результирующих shtml-файлах. Т.е. допустим, в article.txt встретилась ссылка 
(без тегов), и при передаче клиенту, она будет преобразована в <a href...
И конечно это делалось с ssi on, поэтому поведение сервера вполне понятно,
непонятно почему в итоге всё вдруг заработало (но повторить это не удалось).

>> 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