Mercurial > hg > nginx-site
diff xml/ru/docs/http/ngx_http_perl_module.xml @ 1251:ac1b01d37929
Perl module: removed info specific to nginx 0.6.22 and earlier.
author | Yaroslav Zhuravlev <yar@nginx.com> |
---|---|
date | Mon, 14 Jul 2014 20:03:56 +0400 |
parents | 95c3c3bbf1ce |
children | 31f21c7956dd |
line wrap: on
line diff
--- a/xml/ru/docs/http/ngx_http_perl_module.xml Mon Jul 14 17:12:06 2014 +0400 +++ b/xml/ru/docs/http/ngx_http_perl_module.xml Mon Jul 14 20:03:56 2014 +0400 @@ -10,7 +10,7 @@ <module name="Модуль ngx_http_perl_module" link="/ru/docs/http/ngx_http_perl_module.html" lang="ru" - rev="2"> + rev="3"> <section id="summary"> @@ -81,57 +81,6 @@ к локальной файловой системе. </para> -<para> -Нижеописанные проблемы относятся только к версиям nginx до 0.6.22. - -<note> -Данные, возвращаемые методами объекта запроса <literal>$r</literal>, -имеют только текстовое значение, причём само значение хранится -в памяти, выделяемой не Perl, а nginx из собственных пулов. -Это позволяет уменьшить число операций копирования в большинстве случаев, -однако в некоторых ситуациях это приводит к ошибке. -Например, при попытке использования таких значений в числовом контексте -рабочий процесс выходит с ошибкой (FreeBSD): -<example> -nginx in realloc(): warning: pointer to wrong page -Out of memory! -Callback called exit. -</example> -или (Linux): -<example> -*** glibc detected *** realloc(): invalid pointer: ... *** -Out of memory! -Callback called exit. -</example> -Обойти такую ситуацию просто: нужно присвоить значение метода -переменной, например, такой код -<example> -my $i = $r->variable('counter') + 1; -</example> -нужно заменить на -<example> -my $i = $r->variable('counter'); -$i++; -</example> -</note> - -<note> -Так как строки внутри nginx в большинстве случаев хранятся без -завершающего нуля, то они в таком же виде возвращаются и методами -объекта запроса <literal>$r</literal> (исключения составляют методы -<literal>$r->filename</literal> и <literal>$r->request_body_file</literal>). -Поэтому такие значения нельзя использовать -в качестве имени файла и тому подобного. -Обойти это можно так же, как в предыдущей ситуации: присвоив значение -переменной (при этом происходит копирование данных и добавление необходимого -нуля) или же использовав его в выражении, например: -<example> -open FILE, '/path/' . $r->variable('name'); -</example> -</note> - -</para> - </section>