PHP 性能优化须知
应用程序的性能不仅仅是一个技术问题。性能表现能使企业成功或倒闭。所以,如果你认为几毫秒没什么大不了的,请再想一想。
为什么性能至关重要呢?#
性能至关重要的原因有三个。首先是用户体验;如果您的应用程序需要很长时间才能加载,那么您可能会冒着用户切换到竞争对手的风险或者留下不良评论,这将严重影响业务发展。第二个原因是 “转换”,转化次数是指实际购买产品或下载电子书的用户数量,或者通常是为您的服务提供资金的用户。
更快的网站意味着更多的转化和更多的利润。 第三个原因是 “可扩展性”。 您的应用程序每秒处理的请求越多,您可以处理的流量就越多。 例如,如果您的应用程序可以在 100 毫秒内处理单个进程,则意味着您的应用程序每秒可以处理 10 个请求,因此如果您将应用程序处理时间减少到一半,您的应用程序容量将翻倍。
性能案例研究:#
Firefox: 当他们使下载页面的速度提高 2.2 秒时,他们的下载量就会增加 1000 万次。
Shopzilla: 当他们的网站变得比之前快 5 秒,转化率提高了 7--12%。
Bing: 当微软的搜索引擎慢 1 秒,他们会损失大概 2.8% 的收入。
Yahoo!: 和 Bing 一样,当它变慢 0.4 秒,他们将损失 5--9% 的流量。
所以,无论你的应用程序的业务用途是什么,更快的应用应用程序意味着更高的收入。
PHP 性能 优化:#
- 选择正确的版本
这一点在 PHP7 及以后的版本表现尤为突出,相比较与老的 PHP 版本,它具有最佳的性能表现。此处我不会在 PHP 各个版本之间进行比较,因为很多文章都讨论过了,但是你依然可以看一下下边的不同 CMS 在 PHP 各版本之间性能表现的图表。
- PHP 微优化
微优化指的是在你的代码中进行微小的改变来改善你的应用性能。例如,在你使用 for 循环时,提前计算好长度总是更好的。以下图片展示了循环 1000 次的结果。你可以看到执行时间的改善。
尽管微优化能带来一点性能改善,但这仍然是不够的。
你可以从 phpbench.com 网站了解到更多的微优化。
- XHProf: PHP 代码性能分析
当我们到达了 PHP 微优化的极限后,我们是时候需要开始准确判断哪一部分的代码运行缓慢,我们可以使用 XHProf 性能分析工具而不是靠猜测。在服务器上面安装和配置好 XHProf 后,「你可以在 youtube 上面找到一个使用例子。」 XHProf 会添加到你的全部 PHP 脚本的头部和尾部,然后生成一份报告,该报告包含了所有执行的函数、执行的时间、以及每个函数的调用次数。
下图是一个使用 laravel 框架开发的产品页面的性能分析结果。它显示整个执行时间为 5 秒,以及 getProductData () 函数被调用了 40 次。
你可能会遇到 “N+1” 问题,如果解决了它,你的产品页面将快 5 秒。
“N+1” 问题主要发生于从关系数据库的两张表中查询数据。例如,查询所有产品的名字和 id,然后查询另一个表获得每一个产品的颜色或库存可用性等详细细节。通常可以通过重写查询语句来修复,可以通过最多一个或两个数据库请求检索到所有数据。我们将在稍后的数据库请求优化文章里讨论这个问题。
- 缓存
实现缓存层会减轻数据库的负载压力,减少频繁检索所需数据的时间。 Memcache 和 Redis 都广泛用于缓存;但 Redis 更具优势,例如将数据同步到磁盘,重启服务器数据不会丢失,它具有内置的主 / 从复制功能,随着应用程序的增长您可以轻松扩展 redis 集群。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: