在公司一直用PHP作为主要开发语言,前期一直在不停的加需求该需求,年底终于有时间进行一波优化了。或许,PHP已经不再流行了,居然没有一个免费且好用的性能分析工具。这里有一份2015年的PHP性能分析工具的对比,功能上,不得不说老牌的XHProf
依然是最强大的,并且比收费的做得更好,然而,该工具已经好几年没更新了,只有Github
上面的几个fork
,当然也有支持PHP7
的。基于其功能强大、开源免费并且配置相对其他来说比较简单,我还是不得不选择它。
XHProf安装
XHProf主程序安装
1 | for php5.x |
XHProf UI界面安装
1 | cd /tmp && wget http://pecl.php.net/get/xhprof-0.9.4.tgz && tar zxvf xhprof-0.9.4.tgz # 这就是其UI的主程序,同样是一个PHP程序,可以直接配置Nginx或者Apache指向其目录xhprof_html |
需要注意的是,UI默认会去找/tmp
目录下的分析结果。
XHProf使用
Laravel
网上有一些方法是编写中间件,我也试过,但是那样的分析结果并不是我想要的,时间也基本对不上。后来我就来得很直接,放到了整个项目的入口public/index.php
:
1 |
|
XhprofHelper
方法详细如下:
1 |
|
不看不知道,一看吓一跳,分析过很多的接口,我们自己写的逻辑代码基本上都没有什么性能上的问题,但是Laravel
项目光启动就花了几十毫秒,调用链长的我的生成流程图都卡了。后来发现,几十一个什么逻辑都没写,什么依赖都装的纯laravel项目,在启动时候也是非常耗时的。而且我们项目好几个组件做成的为服务,一个请求如果调用几个组件,那时间就是成倍的增长。针对laravel项目,我觉得能优化的主要是这三点:
- 升级到最新
Laravel
,即使是升级稳定版,最新的稳定版也肯定比老的稳定版效率更高。 - 升级到
PHP7
,PHP7
的性能真不是吹的。 - 使用
Swoole
,PHP的异步编程框架。最大的优点,不用每次请求都重启整个框架了。性能提升指数比上面两者都大。
相关文章
- PHP性能被动分析工具之xhgui加tideways的安装实践
- [Profiling Laravel requests with XHProf): 如果要写中间件来分析,可以参考这篇文章,不过要注意,它所以来的第三方库是把UI都打包进去了,如果想要简单点,可以参考我上面的代码写中间件。