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

哪个网站做logo赚钱手工迷你饮水机

哪个网站做logo赚钱,手工迷你饮水机,经三路专业做网站,怎样安装微信小程序Nginx的启动初始化在src/core/nginx.c的main函数中完成#xff0c;当然main函数是整个Nginx的入口#xff0c;除了完成启动初始化任务以外#xff0c;也必定是所有功能模块的入口之处。Nginx的初始化工作主要围绕一个类型为ngx_cycle_t类型的全局变量#xff08;cycle…Nginx的启动初始化在src/core/nginx.c的main函数中完成当然main函数是整个Nginx的入口除了完成启动初始化任务以外也必定是所有功能模块的入口之处。Nginx的初始化工作主要围绕一个类型为ngx_cycle_t类型的全局变量cycle展开。下面具体看一下main函数为Nginx的启动过程做了哪些初始化方面的事情。  main函数做的第一件事情就是对参数选项进行处理和普通的Linux程序如出一辙如下 if (ngx_get_options(argc, argv) ! NGX_OK) {          return 1;    }   if (ngx_get_options(argc, argv) ! NGX_OK) { return 1; }  Nginx用此函数对参数选项进行解析从而采取相应的动作比如显示版本、测试配置等功能。其实此函数实现的很简陋远没有Linux提供的getopt()那么强悍但却可以达到跨平台的目的。 ngx_time_init();  (NGX_PCRE)  ngx_regex_init();  if  ngx_pid  ngx_getpid();  log  ngx_log_init(ngx_prefix);  if (log  NULL) {      return 1;  }   ngx_time_init(); #if (NGX_PCRE) ngx_regex_init(); #endif ngx_pid ngx_getpid(); log ngx_log_init(ngx_prefix); if (log NULL) { return 1; }   上述几行代码的功能如其名time和log后面再用单独的文字来分析此处就不多说了。     if (ngx_save_argv(init_cycle, argc, argv) ! NGX_OK){      return 1;  }   if (ngx_save_argv(init_cycle, argc, argv) ! NGX_OK){ return 1; }  将命令行参数保存到ngx_os_argv、ngx_argc以及ngx_argv这几个全局的变量中。这应该算是一个备份存储方便后面的初始化工作能够随时获取命令行参数。 if (ngx_os_init(log) ! NGX_OK) {       return 1;  }   if (ngx_os_init(log) ! NGX_OK) { return 1; }  完成操作系统的一些信息获取如内存页面大小、系统限制资源等信息所有的这些资源都将会被保存在对应的全局变量中因此后续访问将会很便利。 if (ngx_crc32_table_init() ! NGX_OK) {      return 1;  }   if (ngx_crc32_table_init() ! NGX_OK) { return 1; }  初始化一个做循环冗余校验的表由此可以看出后续的循环冗余校验将采用高效的查表法。crc算法此处就不做分析网上一堆一堆的相关资料有兴趣的同学可以了解。 if (ngx_add_inherited_sockets(init_cycle) ! NGX_OK) {      return 1;  }   if (ngx_add_inherited_sockets(init_cycle) ! NGX_OK) { return 1; }  通过环境变量NGINX完成socket的继承继承来的socket将会放到init_cycle的listening数组中。在NGINX环境变量中每个socket中间用冒号或分号隔开。完成继承同时设置全局变量ngx_inherited为1。     ngx_max_module  0; for (i  0; ngx_modules[i]; i) {      ngx_modules[i]-index  ngx_max_module;  }   ngx_max_module 0; for (i 0; ngx_modules[i]; i) { ngx_modules[i]-index ngx_max_module; }  额这个循环中的ngx_modules数组好像没见定义难不成是火星来的当然不是如其名这就是一个存储所有模块的信息包括自己开发的模块都会放到这个数组中而这个神秘的数组却是在自动编译的时候生成的位于objs/ngx_modules.c文件中。这个循环的目的是清晰可见的——对所有模块进行索引编号方便以后访问同时借助ngx_max_module对所有模块进行了一次点数确定究竟有多少模块。而神秘数组ngx_modules的长相大概如下 ngx_module_t *ngx_modules[]  {      ngx_core_module,               ngx_errlog_module,      ngx_conf_module,      ngx_events_module,      ngx_event_core_module,      ngx_epoll_module,      ngx_openssl_module,      ngx_http_module,      。。。  }     cycle  ngx_init_cycle(init_cycle);   cycle ngx_init_cycle(init_cycle);  这里将会初始化很多的东东到全局变量cycle中是Nginx启动初始化的核心之处。ngx_init_cycle函数的过程比较多放下一篇blog中逐段分析。 if (ngx_init_signals(cycle-log) ! NGX_OK) {      return 1;  }   if (ngx_init_signals(cycle-log) ! NGX_OK) { return 1; }  注册一堆信号处理程序需要注册的信号及相应的信号处理函数被放在一个类型为ngx_signal_t的数组signals中。数组定义在src/os/unix/ngx_process.c中。ngx_signal_t结构类型定义了信号值信号名字信号对应动作名以及信号处理函数。 if (!ngx_inherited  ccf-daemon) {      if (ngx_daemon(cycle-log) ! NGX_OK) {          return 1;      }      ngx_daemonized  1;  }   if (!ngx_inherited ccf-daemon) { if (ngx_daemon(cycle-log) ! NGX_OK) { return 1; } ngx_daemonized 1; }  ngx_daemon肯定就是用来实现守护进程的函数了此处就不多废话了有需要写server程序的可以直接copy这段代码实现守护进程。 if (ngx_create_pidfile(ccf-pid, cycle-log) ! NGX_OK) {      return 1;  }   if (ngx_create_pidfile(ccf-pid, cycle-log) ! NGX_OK) { return 1; }  玩过Nginx的人都知道Nginx启动后有一个记录进程id的文件这个文件里面就一个pid。原来这个pid就是在这个地方记录下来的。查看ngx_create_pidfile函数可以看到这样的一行代码 if (ngx_process NGX_PROCESS_MASTER) {    return NGX_OK;}这行代码就说明了不是master进程时就不创建这样的一个pid文件。 if (ngx_process  NGX_PROCESS_SINGLE) {    ngx_single_process_cycle(cycle);  } else {      ngx_master_process_cycle(cycle);  }   if (ngx_process NGX_PROCESS_SINGLE) { ngx_single_process_cycle(cycle); } else { ngx_master_process_cycle(cycle); }  到此就基本完成Nginx的启动初始化过程了即将开始进程相关的工作了这里最重要的ngx_master_process_cycle这个过程在这个过程里实现了master-worker模式的进程模型也是生成环境下Nginx的常用模型。既然此处已不再是初始化工作那么就留到后续分析吧。  转载于:https://www.cnblogs.com/li-hao/archive/2013/02/28/2937258.html
http://www.zqtcl.cn/news/325061/

相关文章:

  • 网站建设历史视频制作软件有哪些
  • 加盟网站制作定制桥的设计网站建设
  • 深圳做宣传网站的公司开发电商网站多少钱
  • 自适应网站建设公司什么是网站死链
  • 自己给网站做支付接口wordpress elementor
  • 中国最新军事新闻网站优化推广
  • 有没有做3d衣服模型网站php网站开发目的
  • 东莞网站建设方案咨询wordpress易企秀
  • 漳诈网站建设免费的企业网站建设
  • 广州番禺区有什么好玩的地方优化软件有哪些
  • 面包机做面包网站wordpress获取用户注册时间
  • 福州网站建设个人兼职泰州seo排名扣费
  • 泰安北京网站建设公司个人自我介绍网页
  • 网站建设适应全屏如何自动深圳市哪里最繁华
  • 杭州网站推广公司阿里云wordpress 安装目录
  • 厦门优秀网站建设app项目开发流程
  • 工作设计室网站海外网站代理
  • 室内设计官方网站没网站怎么做cpa
  • 哪个网站做欧洲旅游攻略好wordpress编辑器字体大小
  • aspcms 手机网站wordpress 刷浏览量
  • dw网站首页的导航怎么做网站建设企业建站模板
  • 平台型网站建设网站关键词优化seo
  • 齿轮机械东莞网站建设技术支持热搜词排行榜关键词
  • 河南专业做网站网站推广优化c重庆
  • 温州网站建设钱建设工程公司网站
  • 做笑话网站全国大学生职业生涯规划大赛官网
  • 便宜购 网站建设平台推广引流怎么做
  • 怎么用记事本做钓鱼网站制作公司网页的步骤
  • 机械设备东莞网站建设智慧软文网站
  • 个人网站需不需要搭建服务器蘑菇短视频2023版特色功能