最近在做PHP接口的性能优化,在排查性能问题和优化的过程中总结了一些心得,分享给大家。
性能问题排查
首先,做性能优化要先进行性问题排查,即排查PHP接口的代码实现中那一块执行比较慢。
排查方法一
笔者使用的ThinkPHP框架中自带了G方法可以很方便的获取某个区间的运行时间和内存占用情况。 例如:
G('begin');
// ...其他代码段
G('end');
// ...也许这里还有其他代码
// 进行统计区间
echo G('begin','end').'s';//输出代码运行时间
echo G('begin','end','m').'kb';//输出内存开销统计(单位为kb)
通过对不同代码片段的运行时间统计与接口总运行时间的对比,可以分析出哪块代码的运行存在性能问题,然后再针对性的排查。
排查方法二
使用PHP性能分析工具来辅助定位。目前市面上有很多PHP性能分析工具,老牌的调试工具XDebug,以及Facebook开源的Xhprof。
以Xhprof举例,配置成功后,可以记录和生成函数的调用链图,包含每个函数的请求次数、阻塞时间、CPU时间和内存使用情况。
图中标记为红色或黄色的区域就是需要重点关注的地方。
性能问题解决
通常在工具的辅助下,性能问题排查相对来说还是比较简单的。比较有挑战的是如何解决这些性能问题。
笔者在解决性能问题的过程中也做了一些解决方式的总结:
一. 代码层面
代码的风格因人而异,实现方式也非常灵活。两个人实现同样的查询列表功能,代码写法都会不同。
以下几点是我个人总结的代码性能避