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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: