0

0

nginx的数据结构集合(随时更新)

php中文网

php中文网

发布时间:2016-07-30 13:31:43

|

1060人浏览过

|

来源于php中文网

原创

在学习nginx的时候,因为其数据结构略多,看过后一般就忘记了。所以边学习边记录在这里吧,方便以后查看。
ngx_buf_t:缓冲区结点

1: typedefstruct ngx_buf_s    ngx_buf_t;
   2: typedefvoid  *ngx_buf_tag_t;
   3: struct ngx_buf_s {
   4:     /*
   5:      * pos通常是用来告诉使用者本次应该从pos这个位置开始处理内存中的数据,这样设置是因为同一个
   6:      * ngx_buf_t可能被多次反复处理。当然,pos的含义是由使用它的模板定义的
   7:      */8:     u_char  *pos;
   9:                                
  10:     /* last通常表示有效的内容到此为止,注意,pos与last之间的内存是希望nginx处理的内容 */11:     u_char  *last;
  12:                                
  13:     /*
  14:      * 处理文件时,file_pos与file_last的含义与处理内存时的pos与last相同,
  15:      * file_pos表示将要处理的文件位置,file_last表示截至的文件位置。
  16:      */17:     off_t   file_pos;
  18:     off_t   file_last;
  19:                                
  20:     /* 如果ngx_buf_t缓冲区用于内存,那么start指向这段内存的起始地址 */21:     u_char  *start;
  22:                                
  23:     /* 与start成员对应,指向缓冲区内存的末尾 */24:     u_char  *end;
  25:                                
  26:     /* 表示当前缓冲区的类型,例如由哪个模块使用就指向这个模块ngx_module_t变量的地址 */27:     ngx_buf_tag_t  tag;
  28:                                
  29:     /* 引用的文件 */30:     ngx_file_t  *file;
  31:                                
  32:     /*
  33:      * 当前缓冲区的影子缓冲区,该成员很少用到。当缓冲区转发上游服务器的响应时才使用了shadow成员,
  34:      * 这是因为nginx太节约内存了,分配一块内存并使用ngx_buf_t表示接收到的上游服务器响应后,
  35:      * 在向下游客户端转发时可能会把这块内存存储到文件中,也可能直接向下游发送,此时nginx绝对不会
  36:      * 重新复制一份内存用于新的目的,而是再次建立一个ngx_buf_t结构体指向原内存,这样多个ngx_buf_t
  37:      * 结构体指向了同一份内存,它们之间的关系就通过shadow成员来引用,一般不建议使用。
  38:      */39:     ngx_buf_t   *shadow;
  40:                                
  41:     /* 临时内存标志位,为1时表示数据在内存中且这段内存可以修改 */42:     unsigned    temporay:1;
  43:                                
  44:     /* 标志位,为1时表示数据在内存中且这段内存不可以修改 */45:     unsigned    memory:1;
  46:                                
  47:     /* 标志位,为1时表示这段内存是用nmap系统调用映射过来的,不可以修改 */48:     unsigned    mmap:1;
  49:                                
  50:     /* 标志位,为1时表示可回收 */51:     unsigned    recycled:1;
  52:                                
  53:     /* 标志位,为1时表示这段缓冲区处理的是文件而不是内存 */54:     unsigned    in_file:1;
  55:                                
  56:     /* 标志位,为1时表示需要执行flush操作 */57:     unsigned    flush:1;
  58:                                
  59:     /*
  60:      * 标志位,对于操作这块缓冲区时是否使用同步方式,需谨慎考虑,这可能会阻塞nginx进程,nginx中所有
  61:      * 操作几乎都是异步的,这是它支持高并发的关键。有些框架代码在sync为1时可能会有阻塞的方式进行I/O
  62:      * 操作,它的意义视使用它的nginx模块而定。
  63:      */64:     unsigned    sync:1;
  65:                                
  66:     /*
  67:      * 标志位,表示是否是最后一块缓冲区,因为ngx_buf_t可以由ngx_chain_t链表串联起来,因此为1时,
  68:      * 表示当前是最后一块待处理的缓冲区。   
  69:      */70:     unsigned    last_buf:1;
  71:                                
  72:     /* 标志位,表示是否是ngx_chain_t中的最后一块缓冲区 */73:     unsigned    last_in_chain:1;
  74:                                
  75:     /* 标志位,表示是否是最后一个影子缓冲区,与shadow域配合使用。通常不建议使用它 */76:     unsigned    last_shadow:1;
  77:                                
  78:     /* 标志位,表示当前缓冲区是否属于临时文件 */79:     unsigned    temp_file:1;
  80: }

ngx_chain_t:缓冲区链表

typedefstruct ngx_chain_s       ngx_chain_t;
   struct ngx_chain_s
    {
       ngx_buf_t    *buf; //buf指向当前的ngx_buf_t缓冲区
      ngx_chain_t  *next; //next则用来指向下一个ngx_chain_t,如果这是最后一个ngx_chain_t,则需要把next置为NULL。
   };

ngx_http_upstream_t:设置upstream的限制性参数

慧博商城系统HuiboShop2011
慧博商城系统HuiboShop2011

慧博商城系统HuiboShop2011系统特色:1、上百套模板随意下载切换、模板定时更新;2、csv数据导入、数据定向读取,一键导入商品信息,省时、省力; 3、多会员等级管理,一站搞定零售、批发、代销;4、可集成网站分销功能模块,缔造庞大的代理业务链,代理客户一键铺货;5、代码严谨,防SQL注入;前后台用户分开管理,密码不可逆加密;6、简单易操作、只需几分钟搞定一个商城网站;商城后台帐号admin

下载
typedef struct{
...
//连接上游服务器的超时时间,单位为毫秒
ngx_msec_t connect_timeout;
//发送TCP包到上游服务器的超时时间,单位为毫秒
ngx_msec_t connect_timeout;
//接收TCP包到上游服务器的超时时间,单位为毫秒
ngx_msec_t connect_timeout;
...
}ngx_http_upstream_conf_t;

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了nginx的数据结构集合(随时更新),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

705

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

233

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

117

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

22

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

61

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

30

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

669

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

58

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号