国内 C 源码 PHP 框架选择与评价 Yaf Yar Swoole workerman?

先放结论:

需要极致的性能,可以接受代码执行机制和一般的 LAMP 部署方式不一致: Swoole 或 Workerman,本机 ab 压测短连接都能达到 1.9W+ requests/sec;
需要高性能,同时需要包括完整的 MVC 支持在内的全框架特性支持:Phalcon;
需要高性能,专注于实现,仅需要基础的 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 吧。


ii: 薛强用 PHP 实现的 PHP Web 开发框架.

Yaf: 鸟哥用 C 实现的轻量级 PHP Web 开发框架.

Swoole: 峰哥用 C 实现的跑在 CLI 下的 PHP 高性能网络开发库.

Yii 和 Yaf 框架开发的 PHP 程序一般都是跑在 PHP-FPM/Apache 这些容器中.Yaf 性能远胜于 Yii. 而 Swoole 应用则不依赖 PHP 容器 (PHP-FPM 或 Apache), 可以用 PHP 解释器在命令行下单独运行.

所以个人认为,可以用 PHP7-CLI + Swoole 开发高性能接口和即时通讯服务,用 PHP7-FPM + Yaf 开发通用的 Web 程序。可以在网站中结合起来使用,Nginx 负责在前面进行分发,把请求分发给对应的后端处理。架构要比淘宝的 PHP/Node + Java 简单得多,而且性能也有保障.


Practice makes perfect.

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!