摘要: 对于web server来说,必须能够监听到客户端的连接才能与之通信,这篇文章就看一下nginx是如何实现连接的建立。监听到新的连接实际上就是监听socket上的读事件,此时监听socket的已完成连接队列是非空的,可以非阻塞的调用accpet获取新到的连接。在nginx中每个socket都会被封装成一个连接结构,就是ngx_connection_t类型。每个ngx_connection_t结构具有读写事件read和write,它们是ngx_event_t类型的,有一个handler回调函数指针,在发生读写事件时被调用。在ngx_event_process_init函数中为每个监听sock.. 阅读全文
posted @ 2012-11-29 20:01 风去无痕 阅读(3143) 评论(0) 推荐(0) 编辑
摘要: 1. 一些相关的数据结构:// 监听端口配置信息,addrs是在该端口上所有监听地址的数组。typedef struct { ngx_int_t family; in_port_t port; ngx_array_t addrs; /* array of ngx_http_conf_addr_t */} ngx_http_conf_port_t;typedef struct { ngx_http_listen_opt_t opt; ngx_hash... 阅读全文
posted @ 2012-11-29 18:38 风去无痕 阅读(3711) 评论(0) 推荐(0) 编辑
摘要: 对于一个服务器模型来说,事件模型是至关重要的,nginx本身的高性能也归功于它的事件模型。一般来说,nginx的事件模型是基于epoll。而epoll中会调用3函数,epoll_create,epoll_ctl,epoll_wait. (1) 首先介绍一些相关的数据结构:typedef struct { ngx_int_t (*add)(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags); //将某描述符的某个事件(可读/可写)添加到多路复用监控里 ngx_int_t (*del)(ngx_event_t *ev, ng... 阅读全文
posted @ 2012-11-29 16:46 风去无痕 阅读(3712) 评论(0) 推荐(1) 编辑
点击右上角即可分享
微信分享提示