使用 swoft 的话是否完全可以抛弃 PHP -fpm?

2019-01-12 11:07:40 +08:00
 sunmoon1983
要开发一套新的商城,项目中想使用 swoft,但是没有相关的经验,很纠结,是否完全可以抛弃 php-fpm?

nginx 只用来反向代理或者处理静态文件!

对于用惯了 Yii2 的我们,在使用 swoft 的时候,有没有什么建议?

有没有什么坑需要注意?
15440 次点击
所在节点    PHP
49 条回复
xnode
2019-01-12 11:15:20 +08:00
我是习惯用 laravel,swoole 我也在看,但是正式的开发没有写过,swoft 自己用无所谓,开发软件的话,感觉会有坑
salamanderMH
2019-01-12 11:19:26 +08:00
可能应该问,swoole 里有什么坑的
sagaxu
2019-01-12 11:30:02 +08:00
fpm 写的再烂也不会崩,swoole 写的不好就糟糕了,team 平均工资提高个 5000
salamanderMH
2019-01-12 11:44:29 +08:00
我是用 workerman 的,然后套了一个 slim
https://github.com/salamander-mh/WebWorker
xnode
2019-01-12 11:51:26 +08:00
@salamanderMH 大佬 已 star
yepinf
2019-01-12 12:00:30 +08:00
@sagaxu 哈哈哈
提高工资,干脆写 go 多好
zn
2019-01-12 12:16:58 +08:00
开发难度变大。
调试难度变大。
windows 下无法运行调试。
趟的坑(如果碰到的话)也会更难爬出来。

这几个能接受的话可以考虑。
sunmoon1983
2019-01-12 13:47:10 +08:00
@sagaxu 我就是在纠结,PHP-FPM 再差应该比 SWOOLE 实现的 HTTP server 差太多吧,何况 FPM 还不差~~
sunmoon1983
2019-01-12 13:48:22 +08:00
@salamanderMH 是弃用了 nginx+php-fpm 吗?直接用 workerman 的 http server 处理各种逻辑?
xnode
2019-01-12 14:05:48 +08:00
@sunmoon1983 性能是差很多 但是 php-fpm 的回收效率上 是高了很多
gouchaoer
2019-01-12 14:11:30 +08:00
🙄swoole 生态的本质是 php-cli 协程化,类似 golang 的路子,如果后台的 io 很重用 swoft 就比较适合,但是鲁棒性就会降低(比如内存泄漏、coredump、第三方库以及热更新啥的),商城如果流量小+feature 特别复杂,还是 fpm 好一点。。。。如果流量大+feature 比较少功能简单,swoft 就没问题
abcbuzhiming
2019-01-12 14:31:11 +08:00
@sunmoon1983 首先你要搞明白一件事情,SWOOLE 的本质是和类似 Nodejs 那样,基于 jit 将二进制程序常驻内存来获得调用速度的提升,这在本质上的和 PHP-FPM 是有区别的,PHP-FPM 仍然算是解释执行,并没有讲源码 jit 后二进制常驻,就算它上了缓存也是如此。
其次,php-fpm 是一个中间处理器,通过 CGI 协议和真正的 HTTP 服务器进行沟通,所以我觉得你把 PHP-FPM 和 Http 服务器放在一起对比是不合适的,你会把一辆拉人的小汽车和拉货的小汽车放一起比吗?
最后,你都打算放弃 PHP-FPM 了,就算你不愿意去转重一点的 Java,Golang,有一个和 Swoole 原理接近的 Nodejs 为啥不愿意选呢,虽然 NodeJS 这东西自身和真正的重量级后端差的远了,但是它的功能和特点,取代所有 PHP 能出现的场合是毫无问题的,而且 NodeJS 的应用可比 Swoole 广泛的多了,各种操作系统下面都能跑,它的鲁棒性可不是 Swoole 这种一直没有大面积铺开使用的框架能比的
gouchaoer
2019-01-12 14:44:01 +08:00
@abcbuzhiming swoole 比 nodejs 也还要先进一点,nodejs 是异步,没有解决 callback hell 问题,swoole 和 fibjs 对标,不过 fibjs 没啥人用就是了。。。另外 swoole 和 jit 无关。。。如果要舍弃 fpm 推荐转 java 吧,鲁棒生态又成熟。。。。nodejs 这个生态咋说呢,比较适合前端程序员需要做一些后端的东西的情况,因为可以不用在学一门语言了
sunmoon1983
2019-01-12 15:02:47 +08:00
@abcbuzhiming 不是不愿意选其他的语言,而是项目要求的开发时间短,而我们的团队大部分的时间都是在用 php(Yii2)开发,所以我们只能在 PHP 中的做选择~
zjsxwc
2019-01-12 15:05:02 +08:00
如果不用 symfony、zend 的这类大而全的框架的话,swoft 比用 yii2 好
yann1992
2019-01-12 15:08:08 +08:00
一般来说,引入的问题比解决的问题还要多的方案就不要采用了。是否用 swoole 还是要看你团队对 swoole 是否熟悉,如果不熟的话,不建议用
abcbuzhiming
2019-01-12 16:49:26 +08:00
@sunmoon1983 时间短那还想什么,先怼上线再说,引入 swoole 你不怕踩坑浪费时间吗
liaohongxing
2019-01-12 17:25:23 +08:00
试过一把 workerman, 铁定的内存泄露,swoole 估计一样,比如 curl 类等资源句柄根本不会回收,不太好用。
cabing
2019-01-12 17:38:24 +08:00
快速开发,建议直接使用 php 撸吧,先上线。fpm 是 php 的进程管理器,一般 http 服务器用的是 nginx。

直接使用 swoole 就是使用它替换+nginx+fpm,当然这里 nginx 做反向代理。



swoole 这种三方库慎用,如果有啥 core dump,你们咋办。当然你们的同事 hold 的住吗?到时候着急不如提前考虑清楚。

没啥性能问题就用 php。有性能问题也可以先用 php 上一版本。如果业务发展的好再把模块抽出来,用 java 或者 golang 或者 c++抽出做成 rpc 服务就行啊。

比如微博就是移动端都走的 php,对的是 php,你们调用的接口一般都是走的 php,核心模板使用 java 封装成了接口,便于快速开发业务。


如果以后想用 java,spring cloud 来一套,生态全,真的不要太容易啊。
EscYezi
2019-01-12 17:48:16 +08:00
yii2-swoole 了解一下。有时间的话可以踩踩坑🌚

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

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

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

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

© 2021 V2EX