首页 > PHP技术 > swoole > 彻底搞明白了,swoole客户端怎么执行
2021
08-16

彻底搞明白了,swoole客户端怎么执行

Swoole:PHP 协程框架

swoole 使 PHP 开发人员可以编写高性能高并发的 TCP、UDP、Unix Socket、HTTP、 WebSocket 等服务,让 PHP 不再局限于 Web 领域。Swoole4 协程的成熟将 PHP 带入了前所未有的时期, 为性能的提升提供了独一无二的可能性。Swoole 可以广泛应用于互联网、移动通信、云计算、 网络游戏、物联网(IOT)、车联网、智能家居等领域。使用 PHP + Swoole 可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。而至于他怎么运行的呢?小编就来告诉你

e588a1fe72adec436475bc324a10df6e.png


我们可以看到,Swoole 主要包含以下组件:

Master:当我们运行启动 Swoole 的 PHP 脚本时,首先会创建该进程(它是整个应用的 root 进程),然后由该进程 fork 出 Reactor 线程和 Manager 进程。

Reactor:Reactor 是包含在 Master 进程中的多线程程序,用来处理 TCP 连接和数据收发(异步非阻塞方式)。Reactor 主线程在 Accept 新的连接后,会将这个连接分配给一个固定的 Reactor 线程,并由这个线程负责监听此 socket。在 socket 可读时读取数据,并进行协议解析,将请求投递到 Worker 进程;在 socket 可写时将数据发送给 TCP 客户端。

Manager:Manager 进程负责 fork 并维护多个 Worker 子进程。当有 Worker 子进程中止时,Manager 负责回收并创建新的 Worker 子进程,以便保持 Worker 进程总数不变;当服务器关闭时,Manager 将发送信号给所有 Worker 子进程,通知其关闭服务。

Worker:以多进程方式运行,每个子进程负责接受由 Reactor 线程投递的请求数据包,并执行 PHP 回调函数处理数据,然后生成响应数据并发给 Reactor 线程,由 Reactor 线程发送给 TCP 客户端。所有请求的处理逻辑都是在 Worker 子进程中完成,这是我们编写业务代码时真正要关心的部分。

Task Worker:功能和 Worker 进程类似,同样以多进程方式运行,但仅用于任务分发,当 Worker 进程将任务异步分发到任务队列时,Task Worker 负责从队列中消费这些任务(同步阻塞方式处理),处理完成后将结果返回给 Worker 进程。

Swoole 官方对 Reactor、Worker、Task Worker有一个形象的比喻,如果把基于 Swoole 的 Web 服务器比作一个工厂,那么 Reactor 就是这个工厂的销售员,Worker 是负责生产的工人,销售员负责接订单,然后交给工人生产,而 Task Worker 可以理解为行政人员,负责提工人处理生产以外的杂事,比如订盒饭、收快递,让工人可以安心生产。

以上就是“彻底搞明白了,swoole客户端怎么执行”的详细内容,想要了解更多swoole教程欢迎关注编程学习网


扫码芷若 获取免费视频学习资料

编程学习

查 看2019高级编程视频教程免费获取