Изменения

Платформы для запуска Perl веб-приложений

72 байта добавлено, 10:07, 7 августа 2009
ngx_http_perl_module
* Версии ngx_http_perl_module до 0.6.22 имели следующие особенности:
: Значения, возвращаемые методами объекта запроса $r, во-первых, хранились в памяти, выделяемой не perl’ом, а nginx’ом из собственных пулов, что в большинстве случаев позволяло уменьшить число операций копирования, а во-вторых, не завершались нулевым байтом. В некоторых ситуациях это приводит к ошибкам, например, при попытке использования таких значений в численном контексте, или использования незавершённых нулём строк в именах файлов и тому подобном:
:* (FreeBSD) :: <precode>nginx in realloc(): warning: pointer to wrong page</code>:: <code>Out of memory!</code>:: <code>Callback called exit.</precode>:* (Linux) :: <precode>*** glibc detected *** realloc(): invalid pointer: ... ***</code>:: <code>Out of memory!</code>:: <code>Callback called exit.</precode>
: Обход этих особенностей простой — нужно просто скопировать возвращённое значение в скаляр. Например, <source lang="perl">my $i = $r->variable('counter') + 1;</source> заменить на <source lang="perl">my $i = $r->variable('counter'); $i++;</source>