• 保存到桌面  加入收藏  设为首页
PHP

PHP-总结-PHP性能优化

时间:2017-06-27 22:54:19   作者:江节胜   来源:胜行天下   阅读:369   评论:0


1、压力测试工具

Apache Benchmark (ab)
简介
abs是由Apache提供的压力测试软件,安装Apache服务器时会自带该压力测试软件
./ab -n1000 -c100 http://www.xxx.com/
-n请求数 -c并发数 (10次测试完成)
返回值:Request per second 和第二个 Time per request 可以参考
百度首页此值分别为101.65 和 9.838
2、PHP语言级性能优化
A:少些代码,多用PHP自身能力
问题:代码冗余、性能低(PHP代码需要编译器解析为底层语言,
这一过程每次请求都会处理一遍,开销大)
方案:多使用PHP内置变量、常量、函数
PHP代码运行流程
*.PHP ---> Scanner ---> Exprs ---> Parser ---> Opcodes ---> Exec ---> Output
PHP内置函数的性能优劣
内置函数之间也存在快慢差异
需要了解PHP内置函数的时间复杂度
比如isset() 与 array_key_exists()方法间的性能差异
B:尽可能少用魔法函数
PHP提供的魔法函数,性能不佳(为了给PHP程序员省事、PHP语言为你做了很多)
要尽可能避免使用PHP魔法函数
测试:time xxx.php
real 0m0.030s
user 0m0.024s
sys 0m0.007s
C:产生额外开销的错误抑制符
@的实际逻辑:在代码开始前、结束后,增加Opcode,忽略报错
尽可能不要使用@错误抑制符
D:合理使用内存
PHP有内存回收机制保底,但也要小心使用内存
建议:利用unset() 及时释放不使用的内存(注:unset()出现注销不掉的情况)
E:尽量少用正则表达式
正则表示的回溯开销较大
建议:利用字符串处理函数,实现相同逻辑
F:避免在循环内做运算

     for(var i =0,len=data.length; i++){

}
G:减少计算密集型业务
PHP不适合密集型运算的场景(语言特性)

PHP使用场景:衔接Webserver与后端服务、UI呈现

H:务必使用带引号的字符串做键值
PHP会将没有引导的键当作常量,产生查找常量的开销
建议:严格使用引号作为键值
I:减少文件类操作
常见PHP场景的开销次序
读写内存 << 读取数据库 < 读写磁盘 < 读写网络数据
J :优化网络请求
网络请求的坑
1> 对方接口不确定因素
2> 网络稳定性
优化:设置超时时间:连接时间、读超时、写超时
将串行请求并行化
a>使用curl_multi_*()
curl_muiti_add_handle
curl_multi_close
curl_multi_exec
curl_mutil_getcontent
curl_mutil_info_read
curl_mutil_init
curl_mutil_remove_handler
curl_mutil_select
curl_mutil_setopt
curl_mutil_strerror
b>使用swoole拓展
K:压缩PHP接口输出
使用Gzip
利:利用我们的数据输出,Client端能更快获取数据
弊:额外的CPU开销
L:缓存重复计算内容

什么情况下做出内容的缓存(多次请求、内容不变)

流程:Smarty开启caching (图略)

M:重复时间窗口思想

串行
Process1 Process2 Process3 Process4
重叠时间窗口
Process1
Process2
Process3
Process4
旁路方案(图略,数据依赖不强烈时)
N:PHP性能问题的具体分析
工具:XHPorf (源自Fackbook的PHP性能分析工具)
时间:通过分析Wordpress程序(Linux终端环境)
grep ‘import_from_reader’ ./ -r (仅grep示例)
...
其他推荐工具
ab-压力测试
vId-opcode代码分析
O:PHP性能瓶颈解决方法:
Opcode Cache:PHP拓展APC
拓展实现:通过PHP拓展代替原PHP代码中高频逻辑
Runtime优化:HHVM
P:PHP性能问题解决方向
语言级性能优化 ---> PHP周边问题的性能优化 ---> PHP语言自身分析、优化
      容易 ---> 困难

感谢慕课网提供免费视频 imooc.com  
个人网站 https://tech.jiangjiesheng.cn  
E-mail:dev@jiangjiesheng.cn  
江节胜 总结于 2017年6月27日 22时28分  

有任何疑问或技术合作都可联系我

微信:yanfahezuo 【推荐】

QQ:596957738


上一篇:没有了
下一篇:PHP-Composer下载及安装配置过程
相关评论

加我微信 596957738 (QQ同号)加我微信     QQ联系:596957738    地址:江苏省南京市浦口区

苏ICP备2023050353号

   

苏公网安备32011402010305号

江节胜的Gitee,江节胜的Git地址