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

2019-02-21 11:34:28 +08:00
 NicolayShi
7361 次点击
所在节点    PHP
11 条回复
Paual
2019-02-21 11:42:57 +08:00
这个问题具体我也不是很清楚,对于 swoole 不是特别的了解,上一家公司用了 nginx + swoole,没有使用 fpm,我们主要是用 swoole 作为 http 服务器吧,这样的话就没有用到 fpm 了,这是我现阶段的理解哈,如果有错的地方,希望指正,互相学习哈
oncewosiwo
2019-02-21 11:46:35 +08:00
swoole 可以替代 nginx+fpm 直接作为 http 服务器,也可以在应用在后端作为 rpc 服务,和前端的 nginx+fpm 的接口层配合使用
sheeta
2019-02-21 11:47:13 +08:00
应该是 Nginx+Swoole 吧
slince
2019-02-21 12:05:16 +08:00
标准用法是 nginx + swoole ; nginx 转发 http 请求给 swoole ; nginx+fpm 的时候是转发 fastcgi 请求给 fpm
jfcherng
2019-02-21 13:25:03 +08:00
術業有專攻,感覺還是前面放個 nginx 當 reverse proxy 比較好
ferock
2019-02-21 13:32:15 +08:00
swoole 真的是一种奇怪的使用 php 的方式
tanszhe
2019-02-21 13:36:48 +08:00
就是让 php 常驻内存,直接处理各个协议来的内容。
但是 swoole 对 http 协议的支持不是非常完善,所以最好前面用 nginx 来处理 http 协议,只把请求转发给 swoole 来处理。
当然你也可不用 NGINX,直接由 php 来处理。如果想用 swoole 最好是基于框架 使用起来简单的多 比如: https://github.com/lizhichao/one
yc8332
2019-02-21 17:14:08 +08:00
当然是替换 fpm 啊。。。
thou95
2019-02-21 20:45:09 +08:00
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
2019-02-22 11:51:37 +08:00
如果是单机,Swoole 一个就够了,可以替代 Nginx + php-fpm。如果要做分布式,Swoole 作为后端服务,还需要 Nginx 做前置机用来负载均衡。
linpf
2019-03-09 22:31:49 +08:00
@ferock 不能说奇怪,其实是绝大多数常驻程序的标配吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/537175

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX