# 4 框架结构
## 处理请求流程图
![处理请求流程图](https://box.kancloud.cn/2bf005411cc4dc71a1f7018cd5d07287_858x1425.png)
### 服务启动
框架在服务启动时需要完成初始化的一系列工作:
1. 注册Swoole各种事件回调函数
2. 读取配置文件
3. 注册配置管理进程
4. 初始化对象池实例
5. 进入Event Loop事件循环
### 处理请求
1. 根据用户请求的URI路由
2. 判断处理请求的action是否需要协程调度
3. 如2为Y则创建协程Task,将Task压入调度的堆
4. 由IO事件触发协程调度器调度请求
5. Task执行完成,响应用户请求
6. 释放相关资源
## 应用程序目录
建议使用 `app` 作为应用程序目录,业务逻辑都在里面,框架级别的东西也可以通过在 `app` 目录下的继承来修改。
## 入口文件
应用程序需要一个入口启动脚本,并且启动脚本是通过 PHP CLI方式运行的,例如 `server.php`。
## psr4
- 类采用首字母大写的驼峰式命名,类文件名必须与文件内部类名相同
- 使用命名空间,命名空间名字与目录路径对应
- 0 文档说明
- 1 为什么研发新框架
- 1.1 传统php-fpm工作模式的问题
- 1.2 压测数据对比
- 1.3 小结
- 2 微服务框架研发概览
- 2.1 通信框架技术选型
- 2.2 swoole
- 2.3 协程原理
- 2.4 异步、并发
- 2.5 小结
- 3 框架运行环境
- 3.1 环境变量
- 3.2 运行代码
- 3.3 docker
- 3.4 小结
- 4 框架结构
- 4.1 结构概述
- 4.2 控制器
- 4.3 模型
- 4.4 视图
- 4.5 同步任务
- 4.6 配置
- 4.7 路由
- 4.8 小结
- 5 框架组件
- 5.1 协程
- 5.2 类的加载
- 5.3 异步Http Client
- 5.4 请求上下文
- 5.5 连接池
- 5.6 对象池
- 5.7 RPC
- 5.8 公共库
- 5.9 RESTful
- 5.10 多语言
- 5.11 杂项
- 5.12 小结
- 6 常见问题
- 7 附录