PHP 框架 laravel 和 phalcon 性能怎么差了 10 几倍

2017-07-17 14:42:28 +08:00
 holinhot
https://github.com/kenjis/php-framework-benchmark/blob/master/img/php-framework-benchmark-20170214.png

最近打算做一个高并发的项目。



https://github.com/kenjis/php-framework-benchmark#benchmarking-environment
16417 次点击
所在节点    PHP
23 条回复
yangyao
2017-07-17 15:14:23 +08:00
等你业务发展到一定阶段,composer 依赖逐渐增多的时候,性能差距就不那么明显了。
jhdxr
2017-07-17 15:39:51 +08:00
1. 这个 benchmark 是基于 default configuration 的,其中只有 laravel 是默认开启 session 的;
2. 哪怕把 laravel 的 session 关掉,性能应该(因为我没有进行实际的测试,只是推测)也是不如 phalcon 的,因为 laravel 是用 php 写的,而 Phalcon 作为一个扩展是 C ;
3. 估算一下你的高并发的项目的峰值有多少,分到每台机器上又有多少,然后对比下那个 benchmark,也许你就会觉得其实高并发也没什么了;
4. 找一个你手头的代表作,分析下其中 PHP 代码执行、数据库调用、其他内部接口调用等分别耗时多少,也许你就会觉得框架本身的消耗差的并不是那么多了;
5. 如果你供职于 facebook,请无视我以上说的所有内容。( btw,尽管 php7 在性能上赶上 /超过了 HHVM,但没有 HHVM 这个竞争对手,很可能 PHP7 在性能上根本不会有如此大的提升)
jarlyyn
2017-07-17 17:02:18 +08:00
说句可能不爱听的。

既然你选择在这个部分用 php。

那说明你这个部分并发并没有那么重要。
holinhot
2017-07-17 17:55:42 +08:00
@yangyao 这个项目功能不多,都是简单粗暴的网站
holinhot
2017-07-17 17:57:44 +08:00
@yangyao 其他就几个分类,首页是内容页面。简单的会员系统。邮件发送。用户数据提交的就只有添加收藏,评论功能。
holinhot
2017-07-17 17:59:28 +08:00
@jhdxr 高峰时期 30 分钟 300w 请求。
Miy4mori
2017-07-17 18:57:12 +08:00
怕不是只有 yaf 可以满足你的要求
jarlyyn
2017-07-17 19:11:57 +08:00
把核心功能 换个其他的高并发语言比如 go 做个接口?
zjsxwc
2017-07-17 19:18:10 +08:00
瓶颈在 io
firefox12
2017-07-17 19:23:44 +08:00
1700 的 qps. 也不需要太关注什么语言
holinhot
2017-07-17 19:25:55 +08:00
@firefox12 想单台跑
troycheng
2017-07-18 11:18:13 +08:00
高并发不是目的,脱离场景的高并发没什么意义(除了单独压测框架性能)。峰值 1700,用 PHP,接口里稍微有点业务逻辑,单机就够呛能撑住。
gclove
2017-07-18 13:29:10 +08:00
现在的服务器, 性能完全不在语言上

这个测试毫无任何意义, 我觉得(你读过它的代码吗)


它没有连接数据库

明显 Laravel 慢的原因是 比其它框架注入了更多的变量和方法, 比如你可以轻易的读取 session cache redis mysql cookie file 等等.
gclove
2017-07-18 13:30:57 +08:00
当然事实上 phalcon 确实是比较快的

你觉得瓶颈在这里的话, 也可以用 Phalcon
cccoco123
2017-07-18 17:32:20 +08:00
异步协程框架,基于 swoole 特性实现了,SOA 服务化调用,支持并行、串行调用。支持异步日志,异步文件读写,异步 Mysql,异步 Redis,Mysql,Redis 连接池。
github.com/fucongcong/Group-Co
sagaxu
2017-07-19 15:15:21 +08:00
@holinhot 300W 个 Hello World 和算 300W 个比特币,计算量差老远了
sagaxu
2017-07-19 15:17:25 +08:00
@cccoco123 要协程直接用 Go 语言不是更简单吗?
cccoco123
2017-07-19 17:01:16 +08:00
@sagaxu 协程配合异步可以解决并发问题。而 php 本身更适合写业务。并不是因为要协程,就去用 go。 再说了 PHP 的协程也不难~
sagaxu
2017-07-19 17:52:30 +08:00
@cccoco123 Go 也挺适合写业务的,map 和 array 都内置了,多态也有,也不用操心内存,web 周边设施比如 json/http 之类的也都内置了,近一两年从 PHP 转 Go 的不少。

PHP 的协程不难,但是麻烦,要折腾 swoole 2.0,如果在协程里调用了阻塞的 C 扩展,结果会如何?而且 swoole 的文档那么简陋,用户基数又远不如 Go 那么大,出问题的几率和解决问题的成本都高于 Go。PHP 的协程要好用,可能需要再等个三到五年,把 swoole 像 fpm 那样合并到 php 官方版本里去。按照现在用户的需求,swoole 才是 PHP 的未来,FPM 跟不上时代了。
aksoft
2017-07-25 09:06:23 +08:00
你这个什么语言都不行,只能用 c

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

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

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

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

© 2021 V2EX