大体上我们分为3部分:php语言级性能优化;下面我们一一介绍
在优化之前呢,我们先说一下压测
这里用apache的ab模块
命令:ab -n100 -c10 网址
-n请求次数 -c并发数
压测的结果我们主要看两个参数requests per second(每秒处理请求数) 和time per request(处理一个请求花费时间)
一. php语言级性能优化
- 尽量使用php内置函数,如数组合并之类的,并且选择高效的php函数,它主要加快php扫描转译为zend时间
- 较运行方法:time php 文件 可以查看php文件运行时间;也可以在运行之前和之后分别获取一下时间
- 减少php魔术方法的使用
- 尽量少的使用@符,其原理即在使用的前行关闭error_display;后行再开启;增加消耗,使用try catch错误机制抛出
- 及时unset掉不用的数组和变量
- 少用正则,可以使用字符串函数
- 循环时的条件尽量不要运算
二.php周边问题
- 主要时一下几个方面会影响性能
- linux运行环境
- 文件存储
- 数据库
- 缓存
- 网络
- 常见的php场景开销次序:
读写内存 << 读写数据库 < 读写磁盘 < 网络请求;所以我们尽量避免php直接操作磁盘
- 这里来说说网络请求优化
- 设置超时时间:主要有连接超时(建议200ms),读超时(800ms),写超时(500ms)
- 将串行化改为并行化(使用一些php扩展,理论上就是增加旁路或者使用时间窗口重叠,但这样的前提是后面的步骤不依赖于前一步的结果)
- 提高接口速度
- 使用缓存,静态化
三. php性能分析工具
这里使用XHprof工具进行分析
安装及使用:https://www.cnblogs.com/dannywang/p/9243682.html
使用php --ri 查看扩展是否搭建
- 在项目中使用:
在入口文件开始写入xhprof_enable();
结束写入
$xhprof_data = xhprof_disable();
include_once '/var/www/html/xhprof/xhprof_lib/utils/xhprof_lib.php';
include_once '/var/www/html/xhprof/xhprof_lib/utils/xhprof_runs.php';
$xhprof_runs = new \XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, 'your_project');//$run_id 就是产生的文件
生成的报告主要看几个参数
Function Name(方法名);Calls(函数被调用次数);Incl. Wall Time (执行此方法和后面程序所需时间,单位微秒); Exel. Wall Time(此方法执行所需时间);