V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NicolayShi
V2EX  ›  PHP

请教 swoole 是用来替代 nginx + fpm 的还是 配合 nginx + fpm 使用的?

  •  
  •   NicolayShi · 2019-02-21 11:34:28 +08:00 · 7364 次点击
    这是一个创建于 2104 天前的主题,其中的信息可能已经有所发展或是发生改变。
    11 条回复    2019-03-09 22:31:49 +08:00
    Paual
        1
    Paual  
       2019-02-21 11:42:57 +08:00
    这个问题具体我也不是很清楚,对于 swoole 不是特别的了解,上一家公司用了 nginx + swoole,没有使用 fpm,我们主要是用 swoole 作为 http 服务器吧,这样的话就没有用到 fpm 了,这是我现阶段的理解哈,如果有错的地方,希望指正,互相学习哈
    oncewosiwo
        2
    oncewosiwo  
       2019-02-21 11:46:35 +08:00
    swoole 可以替代 nginx+fpm 直接作为 http 服务器,也可以在应用在后端作为 rpc 服务,和前端的 nginx+fpm 的接口层配合使用
    sheeta
        3
    sheeta  
       2019-02-21 11:47:13 +08:00 via Android
    应该是 Nginx+Swoole 吧
    slince
        4
    slince  
       2019-02-21 12:05:16 +08:00
    标准用法是 nginx + swoole ; nginx 转发 http 请求给 swoole ; nginx+fpm 的时候是转发 fastcgi 请求给 fpm
    jfcherng
        5
    jfcherng  
       2019-02-21 13:25:03 +08:00
    術業有專攻,感覺還是前面放個 nginx 當 reverse proxy 比較好
    ferock
        6
    ferock  
       2019-02-21 13:32:15 +08:00
    swoole 真的是一种奇怪的使用 php 的方式
    tanszhe
        7
    tanszhe  
       2019-02-21 13:36:48 +08:00
    就是让 php 常驻内存,直接处理各个协议来的内容。
    但是 swoole 对 http 协议的支持不是非常完善,所以最好前面用 nginx 来处理 http 协议,只把请求转发给 swoole 来处理。
    当然你也可不用 NGINX,直接由 php 来处理。如果想用 swoole 最好是基于框架 使用起来简单的多 比如: https://github.com/lizhichao/one
    yc8332
        8
    yc8332  
       2019-02-21 17:14:08 +08:00
    当然是替换 fpm 啊。。。
    thou95
        9
    thou95  
       2019-02-21 20:45:09 +08:00   ❤️ 6
    Nginx 是 Web 服务器。
    PHP 是脚本语言。

    PHP 有个 SAPI 接口,PHP 默认有几个 SAPI 程序( php-cgi,php-cli,php-fpm...),
    外部可以通过 SAPI 程序调用 PHP。

    FastCGI 是通信协议。
    FPM 是实现 FastCGI 协议的 SAPI 程序。

    Web 服务器可以通过 FastCGI 协议向 FPM 请求处理 PHP 动态页面。
    流程:浏览器 <--HTTP 协议--> Web 服务器 <--FastCGI 协议--> FPM

    Swoole 是 PHP 的网络通信扩展库。
    Swoole 可以实现 FPM,Nginx 的功能,前提要实现 HTTP 协议,FastCGI 协议。

    一般,Web 服务就用 Web 服务器,与自行实现 HTTP 协议相比,Web 服务器已经通过长期时间验证,能保证质量。
    但是,有能力用 Swoole 搞个媲美传统 Web 服务器出来也不是不可能的。

    Nginx 有个反向代理功能,目前推荐通过:Nginx <--反向代理--> Swoole 实现的 Http 服务器。
    Gunn27
        10
    Gunn27  
       2019-02-22 11:51:37 +08:00
    如果是单机,Swoole 一个就够了,可以替代 Nginx + php-fpm。如果要做分布式,Swoole 作为后端服务,还需要 Nginx 做前置机用来负载均衡。
    linpf
        11
    linpf  
       2019-03-09 22:31:49 +08:00
    @ferock 不能说奇怪,其实是绝大多数常驻程序的标配吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3232 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:00 · PVG 21:00 · LAX 05:00 · JFK 08:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.