swoole事件处理流程-php教程

资源魔 62 0
本篇文章的次要内容是对于对swoole事情解决流程的解析,感兴味的冤家能够理解一下,心愿本文能对你有所协助。

理解swoole事情解决流程,先理解两种网络事情解决模式。

Reactor模式

它要求主线程(I/O解决单位)只担任监听文件形容符上能否有事情发作,有的话就立刻将该事情告诉工作线程/过程(逻辑单位)。除了此以外,主线程没有做任何其余工作。读写数据,承受新的衔接,和解决客户申请均正在工作线程中实现。

Proactor模式

两种完成

应用I/O异步模子完成Proactor模式。原理:将一切I/O操作都交给主线程,主线程合营以及内核来解决,营业逻辑操作就交给逻辑单位。例如应用aio_read来完成。

工作流程:

  1. 主线程挪用aio_read函数向内核注册socket上的读实现事情。
  2. 主线程持续解决其余I/O事情。
  3. 当socket上的数据被读入用户缓冲区后,内核向使用顺序(逻辑单位)发送一个旌旗灯号,告诉使用顺序数据可用。
  4. 使用顺序读取数据(客户真个申请),解决完后,挪用aio_write函数向内核注册socket上的写事情。
  5. 主线程持续解决其余逻辑。
  6. 当用户缓冲区的数据写入socket后,内核向使用顺序发送一个旌旗灯号,告诉使用顺序数据发送终了。
  7. 使用顺序事后界说好的旌旗灯号解决函数来解决善后解决,比方封闭socket.

应用I/O同步模子完成Proactor模式。原理:主线程执行I/O事情数据的读写操作,营业逻辑操作就交给逻辑单位。例如应用epoll来完成。

工作流程:

  1. 主线程往epoll内核事情表中注册socket上的读就绪事情。
  2. 主线程挪用epoll_wait期待socket上无数据可读。
  3. epoll_wait有前往后,主线程从socket上读取数据,而后将读取到的数据封装成一个申请工具(客户真个申请),并拔出申请行列步队。
  4. 于是行列步队的生产者线程解决申请工具,而后正在epoll内核事情表中注册socket上的写就绪事情。
  5. 主线程挪用epoll_wait期待socket可写。
  6. 当socket可写时,epoll_wait告诉主线程。主线程往socket写入申请后果。

swoole事情架构图

从图能够看出,假如咱们把Reactor线程以及Work过程组合起来,算作工作线程的话,swoole应用的是reactor事情解决模式。

一个申请经验的步骤以下:

1. 效劳器主线程期待客户端衔接。

2. Reactor线程解决接连socket,读取socket上的申请数据(Receive),将申请封装好后送达给work过程。

3. Work过程就是逻辑单位,解决营业数据。

4. Work过程后果前往给Reactor线程。

5. Reactor线程将后果写回socket(Send)。

相干教程:swoole视频教程

以上就是swoole事情解决流程的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学 Swoole

抱歉,评论功能暂时关闭!