From fb446ac7e6595722917134915d0ff56ba2728884 Mon Sep 17 00:00:00 2001 From: xfy911 Date: Mon, 15 Jun 2026 09:28:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=A7=84=E5=88=92=EF=BC=9AFa?= =?UTF-8?q?stCGI=20=E6=9C=8D=E5=8A=A1=E5=99=A8=E9=9B=86=E6=88=90=E5=AE=8C?= =?UTF-8?q?=E6=88=90=EF=BC=8C=E6=A0=87=E8=AE=B0=20Phase=205=20=E8=BF=9B?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cocoon-plan.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/.cocoon-plan.md b/.cocoon-plan.md index 1661d78..aefd161 100644 --- a/.cocoon-plan.md +++ b/.cocoon-plan.md @@ -46,7 +46,7 @@ ### Phase 5 — 应用网关(进行中) - [x] **FastCGI 协议核心** — 记录编码/解码、参数序列化、响应解析、连接池基础 -- [ ] **FastCGI 服务器集成** — 将 FastCGI 接入 server.c 请求处理流程,对接 PHP-FPM +- [x] **FastCGI 服务器集成** — 将 FastCGI 接入 server.c 请求处理流程,对接 PHP-FPM - [ ] **反向代理连接池** — HTTP/1.1 后端连接复用,减少握手开销 - [ ] **配置热重载校验** — 新配置语法校验失败时拒绝重载,避免把服务搞坏 - [ ] **内存响应缓存** — 基于 LRU + TTL,文件不大时直接缓存到内存,避免重复磁盘 I/O @@ -88,6 +88,30 @@ ## 维护记录(Phase 5 — 自然扩展) ++ 2026-06-15 09:17: **Phase 5 — FastCGI 服务器集成完成** + - 新增 `fcgi_handler.h` / `fcgi_handler.c`:FastCGI 请求处理器 + - 路由匹配:基于前缀匹配,支持最长路径匹配 + - CGI 参数构建:从 HTTP 请求提取 REQUEST_METHOD、SCRIPT_NAME、PATH_INFO、QUERY_STRING 等标准 CGI 变量 + - HTTP 头转 CGI 变量:Host 等头自动转为 HTTP_ 前缀大写环境变量 + - 响应解析:检测 HTTP/ 开头的完整响应直接透传;否则解析 Status: 头或默认 200 + - 连接池:TCP / Unix Socket 复用,支持 pool_size 和 timeout_ms 配置 + - 配置解析扩展(`config.c`): + - 新增 `cocoon_fcgi_rule_t` / `cocoon_fcgi_config_t` 结构体 + - 命令行支持:--fastcgi-prefix、--fastcgi-target、--fastcgi-pool-size、--fastcgi-timeout + - 配置文件支持:fastcgi 规则段,最大 4 条规则 + - 请求处理链集成(`server.c`): + - 在 `handle_request` 中反向代理之后、GET/HEAD 检查之前插入 FastCGI 分发 + - `server_context` 添加 `fcgi_config` 字段 + - `server_create` 中调用 `fcgi_handler_init` 初始化连接池 + - `server_destroy` 中调用 `fcgi_handler_destroy` 释放资源 + - `Makefile` 更新:加入 `fcgi_handler.c` 编译目标,测试规则同步更新 + - `.gitignore` 修复:拆分 `tests/unit/test_*.otests/fixtures/uploads/` 为独立规则 + - 编译验证:零警告,全部通过 + - 单元测试:458 个全部通过 ✓(1 个 Ignored,为预期行为) + - 集成测试:115 项全部通过 ✓ + - 提交已推送到 origin main(`a09452b`) + - 项目状态:Phase 5 进行中,FastCGI 服务器集成已完成,下阶段目标:反向代理连接池 + + 2026-06-15 08:17: **Phase 5 — FastCGI 协议核心实现** - 新增 `fastcgi.c` / `fastcgi.h`:FastCGI 1.0 协议客户端完整实现 - 记录编码/解码:BEGIN_REQUEST、PARAMS、STDIN、STDOUT、STDERR、END_REQUEST