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