您的位置:首页 > 编程语言 > PHP开发

性能优化之PHP优化

2018-03-20 11:59 260 查看
PHP性能初探
什么时候会遇到性能问题?
可能1:语法使用不恰当
可能2:做了它不擅长做的事
可能3:链接的服务不给力
可能4:自身的短板
可能5:我也不知道的问题
性能问题简析
PHP性能问题,在整体项目性能问题所占的比例不会超过50%,通常情况下所占比例是30%到40%
性能优化项目,不用局限于仅优化php
性能问题的解决方向
PHP语言级的性能优化
PHP周边问题的性能优化
PHP语言自身分析、优化(底层c语言的优化)
压力测试工具 - ab(Apache Benchmark)
简介:ab是用Apache提供的压力测试软件。安装apache服务器是会自带改压力测试
如何使用:./ab -n1000 -c 100 url
-n 请求数  -c并发数  url 目标压测地址
语言级的性能优化
优化点:少写代码,多用PHP自身能力
性能问题:
自写代码冗余较多,可读性不佳,并且性能低
为什么性能低
PHP代码需要编译解析为底层语言,这一过程每次请求都会处理一遍,开销大
好的方法:
多使用PHP内置变量、常量、函数



            优化点:PHP内置函数的性能优劣
情况描述:
PHP内置函数,之间依然存在快慢差异
好的建议:

多去了解PHP内置函数的时间复杂度
     优化点:尽可能少用魔法函数
情况描述:
PHP提供的魔法函数,性能不佳
为什么性能低?
为了给PHP程序员省事,PHP语言为你做了很多
好的方法:
尽可能规避使用PHP魔法函数
优化点:产生额外开销的错误抑制符
情况描述:
PHP提供的错误抑制符只是为了方便“懒人”
@的实际逻辑:
在代码开始前,结束后,增加Opcode,忽略报错
好的建议
尽量不要使用@错误抑制符
优化点:合理使用内存
情况描述:
PHP有内存回收机制保底,但也请小心使用内存
好的建议:
利用unset()及时释放不使用的内存(注:unset()出现注销不掉的情况)
优化点:尽量少的使用正则表达式
情况描述:
正则表达的回溯开销较大,“没有金刚钻别揽瓷器活”
好的建议:
利用字符串处理函数,实现相同逻辑
优化点:避免在循环内做运算
情况描述:
循环内的计算式将会被重复计算
优化点:减少计算密集型业务
情况描述:
PHP不适合密集型运算的场景
为什么?
PHP语言特性决定了PHP不适合做大数据运算
PHP适合场景:
适合衔接Webserver与后台服务、UI呈现
优化点:务必使用带引号字符串做键值
情况描述:
PHP会将没有引号的键值当做常量,产生查找常量的开销
好的建议

严格使用引号作为键值
PHP周边问题的性能优化
PHP周边有什么?
Linux运行环境
文件存储设备
数据库
缓存
网络
减少文件类操作
常见PHP场景的开销次序:
读写磁盘、读写数据库、读写内存、读写网络数据
读写内存 < 读写数据库 < 读写磁盘 < 读写网络数据
减少PHP发起网络请求
网络请求的坑:
1、对方接口的不确定因素
2、网络稳定性
如何优化网络请求?
1、设置超时时间(根据需求自行调整)
a):连接超时 建议200ms
b):读超时 建议800ms 不要大于1s
c):写超时 建议500ms
2、将串行请求并行化
a):使用curl_multi_*()

b):使用swoole扩展
                                c):


压缩PHP输出的利与弊
压缩PHP接口输出
            如何压缩?
                使用Gzip即可
        压缩输出的利与弊
        利:利于我们的数据输出,Client端能更快获取数据
        弊:额外的cpu开销
    缓存重复计算内容
    什么情况下输出内容的缓存?
    多次请求,内容不变的情况
        


缓存重复计算内容
    什么情况下输出内容的缓存?
    多次请求,内容不变的情况
    Smarty调优和重叠时间窗口思想
    重叠时间窗口思想
    将串行变为并行模式
              


    PHP旁路方案:
                 


    借助xhprof工具分析PHP性能
    PHP性能问题的具体分析
    工具:XHPorf(源自Facebook的PHP性能分析工具)
    实战:实战讲解:https://www.imooc.com/video/4275
    PHP性能瓶颈解决方法:
    Opcode Cache: PHP扩展APC
    扩展实现:通过PHP扩展代替原PHP代码中高频逻辑
    Runtime优化:HHVM
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: