6、Swoole进程结构

LNMP架构中PHP是需要依赖Nginx这样的Web服务器以及PHP-FPM这样的多进程的PHP解析器。
当一个请求到来时PHP-FPM会去创建一个新的进程去处理这个请求,在这种情况下,系统的开销很大程序上都用在创建和销毁进程上,导致了程序的响应效率并不是非常高。
Swoole的强大之处在于进程模型的设计,即解决了异步问题,又解决了并发问题。
Swoole的进程可分为四种角色:

  1. Master进程
  2. 保证Swoole机制运行,同时利用它创建Master主线程(负责接收连接、定时器等)和Reactor线程(处理连接并将请求分发给各个Worker进程)。
  3. Manager进程
  4. Worker进程和Task进程均由Manager进程派生,Manager管理进程负责结束时回收子进程,避免僵尸进程的存在。
  5. Worker进程
  6. PHP回调函数处理由Reactor分发过来的请求数据,并生成响应数据发送给Reactor,由Reactor发送给TCP客户端。
  7. Task进程
  8. 接收由Worker进程分发给它的任务,以多进程方式运行,处理好后将结果返回给它的Worker进程。

image.png

Swoole进程

在Swoole中采用了和PHP-FPM完全不同的架构,整个Swoole扩展可以分为三层:

image.png