生命周期

imi 是基于 Swoole 开发的框架,所以最好先了解 Swoole,以便了解各种名词概念。

框架生命周期

框架的生命周期大致分为以下几个阶段:

master 进程

  • 初始化框架
  • 扫描注解,构建运行时缓存
  • 初始化 Swoole 中的 Memory 模块
  • 加载项目配置
  • 创建服务器对象
  • 启动服务器

worker 进程

  • Swoole WorkerStart 事件
  • 加载运行时缓存
  • 初始化日志相关
  • 初始化连接池
  • 初始化缓存
  • 初始化路由
  • 触发项目初始化事件(worker 0 第一次启动)

请求生命周期

imi 支持 http、websocket、tcp、udp,但其实都大同小异,都使用了监听事件+中间件的套路,这里以 http 为例说明。

  • Swoole Request 事件
  • 创建请求上下文 RequestContext
  • 调度器(HttpDispatcher)执行中间件
  • 匹配路由
  • 控制器对象->动作方法()
  • Response 响应