swoole与php-fpm

一 、fpm

1、描述:

在对应的服务器上启动php-fpm服务;
Master 主进程 / Worker 多进程模式,启动 Master,通过 FastCGI 协议监听来自 Nginx 传输的请求;
当nginx转发请求时,Master主进程fork一个Work进程处理请求;
每个 Worker 进程只能处理一个请求:初始化模块 -> 初始化php代码 -> 执行php脚本 -> 结束请求 -> 关闭模块;

在这里插入图片描述

二、Swoole

1、描述:


Swoole 采用的也是 Master/Worker 模式,不同的是 Master 进程有多个 Reactor 线程,Master 只是一个事件发生器,负责监听 Socket 句柄的事件变化。Worker 以多进程的方式运行,接收来自 Reactor 线程的请求,并执行回调函数(PHP 编写的)。启动 Master 进程的流程大致是:
初始化模块。
初始化请求。因为 swoole 需要通过 cli 的方式运行,所以初始化请求时,不会初始化 PHP 的全局变量,如 $_SERVER, $_POST, $_GET 等。
执行 PHP 脚本。包括词法、语法分析,变量、函数、类的初始化等,Master 进入监听状态,并不会结束进程;






在这里插入图片描述
三、总结
1、fpm

Master 主进程 / Worker 多进程模式;
启动 Master,通过 FastCGI 协议监听来自 Nginx 传输的请求;
每个 Worker 进程只对应一个连接,用于执行完整的 PHP 代码;
PHP 代码执行完毕,占用的内存会全部销毁,下一次请求需要重新再进行初始化等各种繁琐的操作;
只用于 HTTP Server;

2、swoole:

Master 主进程(由多个 Reactor 线程组成)/ Worker 多进程(或多线程)模式;
启动 Master,初始化 PHP 代码,由 Reactor 监听 Socket 句柄的事件变化;
Reactor 主线程负责子多线程的均衡问题,Manager 进程管理 Worker 多进程,包括 TaskWorker 的进程;
每个 Worker 接受来自 Reactor 的请求,只需要执行回调函数部分的 PHP 代码;
只在 Master 启动时执行一遍 PHP 初始化代码,Master 进入监听状态,并不会结束进程;
不仅可以用于 HTTP Server,还可以建立 TCP 连接、WebSocket 连接;

3、比较:

由 Reactor(epoll 的 IO 复用方式)负责监听 Socket 句柄的事件变化,解决高并发问题;
通过内存常驻的方式节省 PHP 代码初始化的时间;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值