Swoole进程关系

Reactor和Worker与Task的关系,简单理解可认为:eactor = Nginx、Worker = PHP-FPM
Reactor线程异步并行地处理网络请求,然后再转发给Worker工作进程中去处理。
Reactor线程和Worker工作进程之间通过socket进行通信。
在PHP-FPM的应用中,经常会将一个任务异步投递到Redis等队列中,并在后台启动一些PHP进程异步地处理这些任务。
Swoole提供的Worker工作进程是一套更加完整的方案,它将任务投递、队列、PHP任务进程管理融为一体。通过底层的API实现异步任务的处理。另外,Task任务进程可以在任务执行完毕后,再返回一个结果反馈到Worker工作进程。
Swoole的Reactor、Worker、Task之间可以紧密的结合起来,提供更加高级的使用方式。
假设Server是一个工厂

  1. Reactor:销售,接收客户订单。
  2. Worker:工人,当销售接单后,Worker去工作生产出客户需要的东西。
  3. Task:行政人员,帮助Worker干些杂事儿,让Worker专心工作。

底层会为Worker工作进程、Task任务进程分配一个唯一的ID,不同的Worker和Task任务进程之间可以通过sendMessage接口进行通信。