网上充斥着各式各样的 PHP 框架性能对比的文章。然而,他们总是把“苹果”和“橘子”做对比(看上去有点儿像,都是圆的,但其实不是一码事)。这次,我将着重对 Laravel、Symfony 和 Zend 这三个框架做性能对比,并且还要说明为什么这三个框架总是被错误的进行比较。
我给的对比结果你不必全信。读完这篇文章之后,你可以自己搞一个 2GB 的 DigitalOcean 的服务器亲自去检验一下,也就 5 分钟而已。
开始之前,我希望你知道:所有这些框架都足够快,都可以满足你构建任何应用。写这篇文章之前我也犹豫过,我认为做这种层次的对比其实真的挺傻的。我唯一的目的是展示如何在三个框架之间进行公平的比较。
问题的源头
当你在一台全新的 DigitalOcean 服务器上配置 Symfony 或 Zend 项目时,你会发现返回的 http 响应是没有 session 信息的。注意,看下图,cookie 并没有被返回:

然而,Laravel 默认是开启 session 的(另外还有一些中间件)。这样能让基于 Laravel 构建的应用很方便地利用 session 机制将用户状态持久化保存。为了 Laravel 框架的用户更方便而默认开启 session 反倒让 Laravel 在性能对比中很受伤。
另一个常见错误是:要么没有倒出一份优化过的 Composer autoloader ;要么没有用 php artisan config:cache 指令缓存 Laravel 配置信息 -- 这份缓存能够大幅度减少 Laravel 的启动(bootstrap)时间。
设置环境

本文对比了Laravel、Symfony和Zend三个PHP框架的性能,强调了在公平条件下进行比较的重要性。在无session情况下,Laravel表现最佳,其次是Zend,然后是Symfony。而在有session的情况下,框架的性能有所下降。文章提醒读者,尽管框架间的性能差异存在,但它们都足以满足大多数应用需求。
最低0.47元/天 解锁文章
96

被折叠的 条评论
为什么被折叠?



