Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: считать POST реквест в буф фер
Hello!
On Sat, Dec 11, 2010 at 05:55:34PM -0500, magz wrote:
> >r->request_body_in_single_buf = 1;
> >rc = ngx_http_read_client_request_body(r, ngx_http_my_body_handler);
>
> При установке request_body_in_single_buf в 1, в rc
> возвращается NGX_AGAIN. Что на сколько я
> понимаю означает что не полностью
> заполнился буфер r->request_body->buf
После вызова ngx_http_read_client_request_body() нужно сделать
ровно то, что написал Виталий, а именно:
if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
return rc;
}
return NGX_DONE;
Все остальные действия следует выполнять в обработчике
ngx_http_my_body_handler (когда nginx его позовёт).
И, чтобы два раза не вставать:
1. Я крайне не рекомендую пользоваться r->request_body->buf. Это
указатель на буфер чтения тела запроса, а не на само тело. Само тело
следует получить через цепочку r->request_body->bufs. Для случая
r->request_body_in_single_buf = 1 там будет один буфер.
2. Если тело больше, чем client_body_buffer_size[1], то оно
отправится на диск. Это следует иметь ввиду.
[1]
http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#client_body_buffer_size
Maxim Dounin
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|