当前位置: 首页 > news >正文

减肥网站如何做wordpress分站点

减肥网站如何做,wordpress分站点,关键词优化简易,高密做网站2019独角兽企业重金招聘Python工程师标准 在上一章#xff0c;我们对select进行了大致的描述#xff0c;知道了它相对传统的阻塞式服务提高了并发度#xff0c;但是它也由于轮询而导致效率底下。本文对epoll进行讲解#xff0c;相比select它的并发度更高 在上一章我们对select进行了大致的描述知道了它相对传统的阻塞式服务提高了并发度但是它也由于轮询而导致效率底下。本文对epoll进行讲解相比select它的并发度更高现代高负载服务器很多都采用这种模型。 在讲解epoll的具体用法之前我们先看看采用 epoll模型主要用到的三个函数以及一个数据结构。 epoll中三个主要的函数 1int epoll_create(int size); 功能 生成一个epoll专用的文件描述符。 参数 size:在该epoll fd上关注的最大socket fd数。 返回值生成的文件描述符。 2int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); 功能 控制某个epoll文件描述符上的事件可以注册事件修改事件删除事件。 参数 epfd 由 epoll_create 生成的epoll专用的文件描述符 op EPOLL_CTL_ADD 注册、EPOLL_CTL_MOD 修 改、EPOLL_CTL_DEL 删除 fd 关联的文件描述符 event指向epoll_event的指针 返回值0成功 -1失败 3int epoll_wait(int epfd,struct epoll_event * events,int maxevents,int timeout); 功能 轮询I/O事件的发生。 参数 epfd 由 epoll_create 生成的epoll专用的文件描述符 events 用于回传待处理事件的数组 maxevents每次能处理的事件数 timeout 等待I/O事件发生的超时值-1相当于阻塞0相当于非阻塞 返回值0 返回发生事件数 -1 错误 epoll中的主要数据结构 view source print ? 01typedef union epoll_data { 02 void *ptr; 03 int fd; 04 __uint32_t u32; 05 __uint64_t u64; 06} epoll_data_t; 07 08struct epoll_event { 09 __uint32_t events; /* Epoll events */ 10 epoll_data_t data; /* User data variable */ 11}; 其中events的类型有 EPOLLIN 文件描述符可以读 EPOLLOUT文件描述符可以写 EPOLLPRI文件描述符有紧急的数据可读 EPOLLERR文件描述符发生错误 EPOLLHUP文件描述符被挂断 EPOLLET 文件描述符有事件发生 epoll的使用还是很简单的请看下面一个简单的采用epoll提供并发服务的服务端程序注为了简洁都没有进行错误处理实际使用时一定要记住进行错误处理。 view source print ? 01#include errno.h 02#include string.h 03#include sys/types.h 04#include netinet/in.h 05#include sys/socket.h 06#include sys/wait.h 07#include unistd.h 08#include arpa/inet.h 09#include sys/epoll.h 10#include sys/time.h 11 12#define MAXBUF 1024 13#define MAX_EPOLL_SIZE 10000 14#define SERVICE_PORT 8888 15 16 17int main(int argc, char **argv) 18{ 19 int server_fd, new_fd; 20 struct sockaddr_in server_addr, client_addr; 21 22 struct epoll_event ev; 23 struct epoll_event events[MAX_EPOLL_SIZE]; 24 25 socklen_t len sizeof(struct sockaddr_in); 26 server_fd socket(AF_INET, SOCK_STREAM, 0) 27 28 bzero(server_addr, sizeof(server_addr)); 29 server_addr.sin_family AF_INET; 30 server_addr.sin_port htons(SERVICE_PORT); 31 server_addr.sin_addr.s_addr INADDR_ANY; 32 33 bind(server_fd, (struct sockaddr *) server_addr, sizeof(struct sockaddr)) 34 listen(server_fd, 1000) 35 36 //create epoll fd, and register the server listening fd 37 int epoll_fd epoll_create(MAX_EPOLL_SIZE); 38 ev.events EPOLLIN | EPOLLET; 39 ev.data.fd server_fd; 40 epoll_ctl(epoll_fd, EPOLL_CTL_ADD, server_fd, ev) 41 42 int active_fd_count 1; 43 while (1) 44 { 45 //wait for some events to happen 46 int event_active_fd_count epoll_wait(epoll_fd, events, active_fd_count, -1); 47 48 // process all events 49 for (int i 0; i event_active_fd_count; i) 50 { 51 if (events[i].data.fd server_fd) 52 { 53 new_fd accept(server_fd, (struct sockaddr *) client_addr,len); 54 55 //register new fd to epoll 56 ev.events EPOLLIN | EPOLLET; 57 ev.data.fd new_fd; 58 epoll_ctl(epoll_fd, EPOLL_CTL_ADD, new_fd, ev) 59 active_fd_count; 60 } 61 else 62 { 63 handle message on events[i].data.fd 64 if (client close the connection) 65 { 66 epoll_ctl(epoll_fd, EPOLL_CTL_DEL, events[i].data.fd,ev); 67 active_fd_count--; 68 } 69 } 70 } 71 } 72 close(server_fd); 73 return 0; 74} 讲完epoll的常规使用方法这里需要注意的是epoll有两种工作方式 1ETEdge Triggered边缘触发。仅当状态发生变化时才会通知需要细致的处理每个请求否则容易发生丢失事件的情况。只支持非阻塞的socket。 2LTLevel Triggered水平触发默认工作方式。只要还有没有处理的事件就会一直通知因此不用担心事件丢失的情况。效率会低于ET触发尤其在大并发大流量的情况下。支持阻塞和非阻塞的socket。 最后讲讲 为什么epoll会比select高效主要从三方面来进行论述。 1elect对描述符状态的改变是通过轮询来进行查找的而epoll是当描述符状态发生改变时主动进行通知内核这就是所谓的Reactor事件处理机制。可以用“好莱坞原则”进行描述不要打电话给我们我们会打电话通知你。相比之下select的机制就好比面试结束后不停给面试官打电话询问面试结果。效率孰高孰低可见一 斑。 2select的文件描述符是使用链表进行组织的而epoll是使用红黑树这一高效数据结构组织的。 3select从内核到用户空间传递文件描述符上发送的信息是使用内存复制的方式进行的而epoll是采用共享内存的方式。 转载于:https://my.oschina.net/u/581475/blog/73195
http://www.sadfv.cn/news/370084/

相关文章:

  • 深圳app设计网站建设html代码基础
  • 三只松鼠网站推广策略云浮头条新闻
  • 上海百度嘉定公司网页设计seo关键词优化经验技巧
  • 多个网站对比表格怎么做织梦cms模板下载
  • 温州自适应网站建设网站推广app软件下载
  • 上海响应式网站开发个人简历网页制作代码
  • 如何查询网站是哪家公司做的网站建设技巧
  • 辽宁移动惠生活app官方版win10系统优化工具
  • 淘宝数据网站开发附近做广告招牌的
  • 教做网站视频怎么建公众号申请
  • 做兼职网站的主要参考文献手机制作公章的软件
  • 有哪些企业会找人做网站建设wordpress淘宝商城
  • 合肥网站建设新手阿里巴巴网站的营销策略
  • 网站建设 空间选择wordpress移动模块位置
  • 青岛做网站seo四川建筑人才网
  • 洛阳网站推广优化公众号seo排名软件
  • 东营智能网站设计常州本地做网站的大公司
  • 网站开发google图片怎么上传到wordpress
  • 建设一个网站的目标与期望泉州专业做网站开发
  • 北京智能网站建设企业郑州建设企业网站
  • 网站制作策划方案生成图片链接的网站
  • 必要网站用什么做的芜湖企业排名
  • 郑州快速建站模板深圳科源建设集团有限公司网站
  • 百度网站收录查询地址制作网站服务
  • 胶州网站搭建公司山东网络安全
  • 网站模板和定制的区别运用photoshop设计网站首页
  • 中煤建设集团网站路由器做服务器做网站
  • 企业微网站建设个人承包工程合同范本
  • 邯郸怎么做网站舟山网站建设设计
  • 展示照片的网站在门户网站中