Chinaunix首页 | 论坛 | 博客
  • 博客访问: 429866
  • 博文数量: 83
  • 博客积分: 2622
  • 博客等级: 少校
  • 技术积分: 1345
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-17 08:59
个人简介

一直在努力

文章分类

全部博文(83)

文章存档

2014年(3)

2013年(9)

2012年(46)

2010年(25)

分类: 系统运维

2012-06-04 16:05:50

nginx 对http request body的处理方法
上面我们已经开始处理http request header了,接下来,如果请求中有body内容,那么需要处理body了。这里你肯定不会想要去阻塞式的读取body吧?body的长度可大可小,网络环境也巨复杂,只要有阻塞操作肯定玩完。Nginx这时已经准备了一个现成的读取body的非阻塞模式给用户,就是ngx_http_read_client_request_body方法。

大家看下ngx_http_read_client_request_body方法的原型:

ngx_int_t

ngx_http_read_client_request_body(ngx_http_request_t *r,ngx_http_client_body_handler_pt post_handler)

参数r就是要处理的请求,post_handler则是body接收完成后的回调方法。

所以,在worker进程中,调用ngx_http_read_client_request_body是不会阻塞的,要么读完socket上的buffer发现不完整立刻返回,等待下一次EPOLLIN事件,要么就是读完body了,调用用户定义的post_handler方法去处理body


ngx_http_output_filter负责发送需要传送client的buf内容

阅读(1507) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~