侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

nginx + php-fpm的处理流程对比workerman、hyperf等

技术  /  管理员 发布于 3年前   2198

nginx是怎么通信的?

1.nginx 配置里 9000 端口是 php-fpm 程序默认端口,nginx 应该和 php-fpm 保持了长连接;如果没有,那每次请求连一次,太愚蠢了,nginx 监听了 80 端口,它内部有连接 9000 端口的套接字(对 php-fpm 来说,nginx 是客户端)


2.nginx 的主套接字监听 80 端口,有客户端完整请求时,它通过连接 9000 端口的套接字转发数据给 php-fpm


3.主套接字监听端口,是等别人来找你(服务端);连接其它软件的端口的套接字,是找别人(客户端)两个套接字,套接字也是文件资源句柄,一个守着 80 端口等用户发请求过来,一个把请求转发给 php-fpm 监听的 9000 端口


4.本机进程间通信,也叫 ip 换回连接,本机程序通信还有 unix ,就是监听 .sock 文件,数据传输在监听文件上表现,tcp 环回连接 性能不如 unix 连接


nginx处理客户端请求过程

nginx接收客户端数据,判断是否构成完整http消息

1.判断是否转交 php-fpm 处理

2.有选择地(请求行和部分消息头是专门给 nginx 看的,可能会剔除)将http消息发送给php-fpm 

3.php-fpm 主程序创建子进程

4.子进程将 http 消息更新超全局数组(也可能是主程序做),引入 php 入口文件,返回 http 响应给主程序

5.php-fpm 主程序将 http 响应消息返回给 nginx

6.nginx 将 http 响应消息返给客户端,并决定是否关闭连接(在响应头 Connection 字段通知客户端)



nginx+php-fpm、workerman区别

1.

php-fpm 创建子进程处理请求,一个子进程处理一个请求,处理完关闭子进程。

workerman/hyperf/ 其它 php 服务器,创建子进程,

但是子进程是独立的服务器,子进程接收客户端连接、数据、解出完整请求消息,转化为 request 对象,

经过应用程序得到 response 对象,再转成响应消息,最后发送给客户端。


2.

php 服务器没有 php-fpm 的来一个请求创建关闭一次子进程的消耗。

它的主程序只用来监听子进程服务器的运行与维护,发现子进程关闭后重新创建新的子进程。

它的子进程,就做了 nginx + php-fpm 的事,同时没有频繁的更下级的子进程的创建关闭消耗。


3.

nginx转发客户端请求给php-fpm主程序

php-fpm创建子进程处理请求

子进程引入 php 入口文件,通过业务逻辑将请求转成响应,返给主程序并关闭自身

php-fpm 主程序将子进程处理的响应返给nginx

nginx响应客户端。


4.

workerman 主程序创建 N(可配置)个各类

(tcp/http/udp/unix/https/websocket…) 子进程(相当于服务器)

其中,http 子进程完成类似 nginx + php-fpm 功能


workerman/nginx+php-fpm性能优势对比

1.不需要像 nginx 和 php-fpm 那样本地端口通信

2.不需要像 php-fpm 那样创建子进程专门处理

3.数据常驻内存,数据单例化高,性能越来越快,不需要单独重复性引入所谓入口文件及对应整套逻辑,http 子进程监听某个端口(比如 80),接收客户端连接、数据,处理后返回数据给客户端


  • 上一条:
    udp、tcp、https、websocket协议知识及tcp的拆包粘包
    下一条:
    上个世纪程序员被解雇后“报复方案”被曝光了
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 2024.07.09日OpenAI将终止对中国等国家和地区API服务(0个评论)
    • 2024/6/9最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 国外服务器实现api.openai.com反代nginx配置(0个评论)
    • 2024/4/28最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2017-09
    • 2018-01
    • 2018-07
    • 2018-08
    • 2018-09
    • 2018-12
    • 2019-01
    • 2019-02
    • 2019-03
    • 2019-04
    • 2019-05
    • 2019-06
    • 2019-07
    • 2019-08
    • 2019-09
    • 2019-10
    • 2019-11
    • 2019-12
    • 2020-01
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-12
    • 2024-02
    • 2024-04
    • 2024-05
    • 2024-06
    • 2025-02
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客