Re: использование perl_set

Igor Sysoev is at rambler-co.ru
Mon Nov 27 17:42:00 MSK 2006


On Fri, 24 Nov 2006, Veryazov Sergey wrote:

> Спасибо патч помог, но только на 1 вызов.. :)
> Т.е. начиная со следующего перестает работать и значение больше не 
> появляется...
> Пишет тоже самое:
> ... failed: "Can't call method "header_in" on an undefined value at (eval 5) 
> line 3...
>
> А еще такой момент.
> Переменные не могут быть установлены из модуля
> если они заранее не проинциализированы.
>
> Т.е. приходится прибегать к трюку:
>
> perl_set $a 'sub {return ""; }';
> perl_set $b 'sub {return ""; }';
> perl_set $c module::setup;
>
> а в модуле уже:
> sub setup {
> $r->variable("a", 'A-value');
> $r->variable("b", 'B-Value');
> return 'C-value';
> };
>
> (просто в реальном примере процедура определения a,b,c - комплексная,
> а значения нужны по отдельности)

В 0.4.14 исправлено.

> Иначе вылетает еще при запуске
> Restarting NGINX...
> 2006/11/24 20:33:50 [emerg] 24258#0: unknown "a" variable
> Attempt to free unreferenced scalar: SV 0x644fa0, Perl interpreter: 0x582950.
> Attempt to free unreferenced scalar: SV 0x644db0, Perl interpreter: 0x582950.

Нужно создать эти переменные на уровне server или location:

       location / {
            set  $a  "";
            set  $b  "";
       }

Можно и perl_set, но set дешевле.


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





More information about the nginx-ru mailing list