1. 首页
  2. >
  3. 编程技术
  4. >
  5. PHP

PHP调优入门

PHP应用的性能并不是单纯的技术问题,它对商业层面的影响也很大。如果你认为几微秒不值得你花时间去提升,那说明你还没有到达高级程序员的水平。


本公众号专注于PHP语言的学习教程,欢迎关注我们。


性能的价值


性能对PHP应用(软件)的意义,主要是三个方面。其一是用户体验,更快的速度无疑会让用户体验更好;其二是更快的速度能够提升转化率;其三,高性能的应用具有更好的可伸缩性(scalability),能够处理更多的请求。


火狐浏览器将页面下载速度提升了2.2秒之后,获得了1千万额外的下载量;Shopzilla提升了5秒时间,获得了7-12%的转化率提升;Bing的搜索速度降低1秒,代价是2.8%的营收;雅虎的搜索速度增加了0.4秒,失去了5到9%的流量。


提升性能的途径


选择正确的版本


PHP调优入门


上面这个图表展示了不同PHP版本之下,不同PHP应用的速度。你可能不相信,现在还有很多PHP网站运行在PHP4环境里。原因其实也不难理解,这些网站结构复杂(错综复杂),但是项目的收入不足以支持雇佣大批程序员进行项目重构然后往高版本迁移,因此就这么死撑着。考虑一下吧,网站项目的升级策略其实非常重要,只有不怕麻烦,紧跟PHP生态的升级节奏,把升级难度分解到N个小步骤里,这样让团队适应经常更新这件事,也能避免因为怕麻烦而积重难返。


PHP微优化


微优化指的是PHP代码中的一些微小优化,比如在for循环中,如果有一个返回结果始终相同的函数(比如count/sizeof)在循环体里每次都被调用,无疑会增加很大的开销。也许刚开始的时候这个循环的次数只有100,当项目增大之后可能会暴涨到10万甚至更大,这个开销就非常可观了。


PHP调优入门


从上图来看,如果把count提前调用,时间开销会降低80%。另外,sizeof虽然只是count的别名,但是时间开销却有所不同,应该避免使用。


微优化对PHP项目的提升很有限,不过也值得你的注意。


XHProf:代码分析


XHProf意思是层次式性能分析器,它通常和XHGui搭配使用,它可以收集php应用的详细信息,包括内存使用量、频度、函数调用耗费的时间、对请求的相应时间等等信息,并且用可视化报表的形式展示给你看,方便你快速找到影响性能的病灶。


PHP调优入门


PHP调优入门


上图展示的是使用laravel框架开发的一个应用的产品页,可以看到getProductData()这个函数被调用了惊人的40次,耗时5秒。


N+1查询问题


这个问题是关于数据库查询的,在本文稍微提一下,不深究了。


缓存


缓存是一门大学问,是提升php应用性能的非常有效的方法。Redis是非常热门的选择,比较Memcache而言具有更多优势,值得你学习。此外,在项目架构里预留缓存的位置,未雨绸缪,也是很好的习惯。


预加载/Preloader


PHP的预加载技术相对而言会稍微复杂一些。预加载会耗费较多的内存,因此选择性就显得非常重要,你需要通过opcache_get_status函数进行有效的分析,将一些高频代码选择出来进行预加载(成opcode)到opcache。


ref:

https://codeburst.io/php-performance-optimization-992acaa78817