Повторное использование map при изменении исходной переменной
Kirill A. Korinskiy
catap+nginx at catap.ru
Fri Jul 24 15:26:23 MSD 2009
At Fri, 24 Jul 2009 15:11:38 +0400,
Igor Sysoev <is at rambler-co.ru> wrote:
>
> flush нужен для того, чтобы в r->variables записалось новое значение.
> Поскольку set пишет сразу в r->variables, то ему flush не нужен.
>
> flush, возможно, нужен для выражения, которое считает set.
>
но человек ставит второй раз, после использования, переменную. Она все
еще valid и не not_found, т.е. даже если код сделает
ngx_http_script_flush_no_cacheable_variables она не перестанет быть
валидной (ибо не стоит no_cacheable) и, соответственно мы получаем что
нужно делать дублирование map.
Пока в голову приходит только сделать что-то подобное:
void
ngx_http_script_force_flush_variables(ngx_http_request_t *r,
ngx_array_t *indices)
{
ngx_uint_t n, *index;
if (indices) {
index = indices->elts;
for (n = 0; n < indices->nelts; n++) {
r->variables[index[n]].valid = 0;
r->variables[index[n]].not_found = 0;
}
}
}
может включишь это? Вот лично мне это сильно упростит жизнь и не надо
будет сильно извращаться.
Но да, я согласен, что это хак. Но лучше варианта я пока не придумал.
--
wbr, Kirill
More information about the nginx-ru
mailing list