最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

PHP接口性能优化之路

XAMPP下载 中文小张 848浏览 0评论
No.1

性能问题排查

首先,做性能优化要先进行性问题排查,即排查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时间和内存使用情况。

No.2

性能问题解决

通常在工具的辅助下,性能问题排查相对来说还是比较简单的。比较有挑战的是如何解决这些性能问题。笔者在解决性能问题的过程中也做了一些解决方式的总

一. 代码层面

代码的风格因人而异,实现方式也非常灵活。两个人实现同样的查询列表功能,代码写法都会不同。

以下几点是我个人总结的代码性能避坑指南:

  1. 使用PHP7+版本。PHP7发布的时候号称比PHP5.6快两倍,而最新的PHP 7.3比PHP 5.6快3倍!所以升级PHP版本的收益还是很大的。
  2. 尽量减少循环嵌套写法。循环嵌套增加所带来的运行消耗是指数级的。例如第一层循环执行100次,第二层循环执行100次,第三层循环执行100次,那么最终循环的运行次数就是100100100 = 一百万次。所以要尽量减少循环的嵌套。
  3. 尽量减少数据库操作,例如避免在循环中进行数据库查询。数据库操作是比较消耗性能的动作,如果可以尽量少的做数据库操作,性能会有很大的提升。
  4. 尽量将对象的声明写在循环外部以减少声明次数。
  5. 使用unset()及时释放不使用的变量尤其是大数组,以便释放内存
  6. 方法尽量静态化。静态方法在程序开始时生成内存,实例方法在程序运行中生成内存,所以静态方法可以直接调用,实例方法要先成生实例,通过实例调用方法,静态速度很快,但是多了会占内存。
  7. 尽量少用正则表达式。正则表达式的开销大,使用起来简单,但是性能低。因为正则表达式需要回溯;正则表达式越长,回溯的开销越大,优化正则表达式是需要技术水平的,正则技术不达标,不要乱用正则
  8. 使用单引号。在php中,单引号和双引号是有区别的,作为一种习惯字符串我都用单引号,因为它无需编译。
二. 数据库层面

 sql查询优化

排查问题过程中,会发现很多性能的瓶颈在于复杂sql的查询太慢。我们可以使用‘EXPLAIN ’关键字来分析复杂sql的运行慢的原因。将‘EXPLAIN’加在sql语句开始的位置,就能分析出这条SQL语句的执行计划,查看该SQL语句有没有使用索引,有没有做全表扫描等等。

 

转载请注明:XAMPP中文组官网 » PHP接口性能优化之路

您必须 登录 才能发表评论!