对于韩天峰(Rango)的博客 《Yii/Yaf/Swoole 3个框架的压测性能对比》一文分析引起我作为一名 PHPer 的思考:如今PHP 的玩法越来越多,那么在大部分PHP开发中,大家是怎么看待这些框架的呢?而像BAT这些巨头类的企业,PHP开发方向他们是一个什么状态呢?

回复内容:

先放结论:
  1. 需要极致的性能,可以接受代码执行机制和一般的 LAMP 部署方式不一致: Swoole 或 Workerman,本机 ab 压测短连接都能达到1.9W+ requests/sec;
  2. 需要高性能,同时需要包括完整的 MVC 支持在内的全框架特性支持:Phalcon;
  3. 需要高性能,专注于实现,仅需要基础的 URL 路由:Yaf。
Swoole 的运行机制和其他所有框架都不一样,是完整的 FastCGI 模式,即不仅只去除了 Fork 的开销,还消灭了重复性的 init。 因此,也带来了开发时需要注意发布新版本必须重新 reload。 其配套框架似乎能解决此问题,但抱歉未深入研究。
Workerman 的核心要点和 Swoole 一致,但采用了纯 PHP 的 Web Socket 实现。和 Swoole 相比最大的好处是移除了对 C 扩展的需求,但必须采用 CLI 模式运行使其还是无法跑在虚拟主机上,但不管怎么说,起码客户端不需要依赖扩展了。
没有在生产环境中玩过以上两者,不过多评价。

Yaf 也提供了极高的性能,同时不改变原有的 PHPer 的知识架构,只是为了简洁放弃了 DB 有关的封装。但事实上这部分即重,又不是高度重复执行,确实没有必要在扩展层面实现,通过 Composer 随便装个 ORM/ActiveRecord 的包就可以了。 何况对于高性能网站的前端而言,大部分时候是不会允许去碰缓存外的东西的。
Phalcon 比起 Yaf 来说,框架特性和文档都要好很多,性能下降也并不多(仅1/10左右的差异)。
以上两者,一般来说我更推荐 Yaf,架构总是要有取舍的,认清楚 Yaf 没有像其他框架一样提供那么多舒心的特性是有原因的:别在要求高性能的场合玩那些有的没的。

所以,如果是修改较少的内部服务(比如SOA 架构中后端去除 View 了的 BLL 层),或是开放 API 系统之类,那么我推荐 Swoole / Workerman。
如果是团队不想经历较高的学习曲线(实际上面对高性能这个问题时,只有高、较高和非常高这几个选项吧?),那么就用 Yaf / Phalcon 吧。Yaf Yar Swoole 这三个是C的扩展的框架,workerman应该是原生的PHP写的socket服务器框架。

我觉得这四个不管哪一款都是国内比较优秀的并且令人耳目一新的框架。这四款框架让我们了解到PHP不仅仅局限于做数据库的增删改查,还能实现更多重要的东西。

据我所知像BAT这类巨头企业中早已经有用原生PHP做服务器(类似workerman)类似的应用,而且有交大规模的应用和部署。Baidu: HHVM,Yaf
阿里:主要用在Web前端
腾讯:以前是纯PHP写的Socket框架PSF,基本已经停用了,Swoole是未来的技术发展方向。选择 C 源码类型的 PHP 框架的唯一理由是性能。正在测试yaf框架和HHVM一起用,但不知扩展支持情况PHP7出来了
09-17 10:23