zoukankan      html  css  js  c++  java
  • PHP性能优化

    2015.8.17

     
    解决方向:
    PHP语言级的性能优化
    PHP周边问题的性能优化
    PHP语言自身分析、优化(PHP底层 C层面上的)
     
    PHP语言级性能优化
    优化点:少些代码,多用PHP自身能力
        性能问题:自写代码冗余较多,可读性不佳,并且性能低
        原因:PHP代码需要编译解析为底层语言,每次请求都会处理,开销大
        多使用PHP内置变量、函数、变量
        php代码运行流程:
    优化点:PHP内置函数的性能优劣
        php内置函数之间依然存在快慢差异
        多去了解PHP内置函数的时间复杂度
    优化点:尽量少用魔法函数
        PHP提供的魔法函数,性能不佳
        尽可能规避使用PHP魔法函数(只是尽量,可以进行对比)
    优化点:产生额外开销的错误抑制符@
        @符号逻辑:在代码前、结束后,增加Opcode,忽略报错
    优化点:合理使用内存
        PHP有内存回收机制保底,但是也请小心使用内存
        利用unset()及时释放不适用的内存(注:unset()出现注销不掉的情况)
    优化点:尽量少的使用正则表达式
        正则表达式的回溯开销较大,
        利用字符串处理代码,实现相同逻辑
    优化点:避免在循环计算式内做运算
        循环内的计算式将会被重复计算
    1. <?php
    2. $str="hello word";
    3. for($i=0;$i<strlen($str);$i++){
    4. //do something
    5. }
    应该改为
    1. <?php
    2. $str="hello word";
    3. $count=strlen($str);
    4. for($i=0;$i<count;$i++){
    5. //do something
    6. }
    优化点:减少计算密集型业务
        PHP不适合密集型运算的场景
        PHP语言特性决定了PHP不适合做大数量级的运算
        PHP适合衔接WebServer与后端服务、UI呈现
    优化点:务必使用带引号字符串做键值
        PHP会将没有引号的键值当做常量,产生查找常量的开销
        严格使用引号作为键值
    1. <?php
    2. $array=array(
    3. "key"=>"ddd",
    4. "imooc"=>"ddfdfdf"
    5. );
    6. echo $array[key]." ";//PHP自带纠错功能
    虽然$array["key"]和$array[key]的输出一样,但是$array["key"]性能更好
     
     
    PHP周边问题的性能优化
    优化运行环境
        Linux运行环境

        文件存储
        数据库
        缓存

    减少文件类操作
        常见PHP场景的开销次序:
            读写磁盘、读写数据读写内存、读写网络数据
            读写内存<<读写数据库<读写磁盘<读写网络数据
     
    优化网络请求
        问题:对方接口的不稳定因素、网络稳定性
        方法:设置超时时间 
                      1.连接超时 200ms
                      2.读超时  800ms
                      3.写超时  500ms
                将串行请求并行化
                    1.使用curl_multi_*()
                    2.使用swoole扩展(最佳)
     
    压缩PHP接口输出(压缩数据)
        使用Gzip即可实现输出压缩
    压缩输出的利弊:
        利:利用我们的数据输出,Client端能更快获取数据
        弊:压缩将参数额外的CPU开销
     
    缓存重复计算内容
        在多次请求。内容不变的情况可以使用内容缓存,使用缓存互用机制(就可以使用静态化)
    重叠时间窗口思想
    旁路方案
     
    PHP性能瓶颈解决方法:
        Opcode Cache:PHP扩展(APC、memcache等缓存扩展)
        扩展实现:通过PHP扩展代替原PHP代码中高频逻辑
        Runtime优化:HHVM等



  • 相关阅读:
    Linux 安装oracle客户端
    测试杂感:Bug Bash
    常用Eclipse插件在线安装地址
    [转]Source Insight使用小技巧小结
    cygwin安装
    Jmeter常见问题
    对测试人员或开发人员来说相互沟通有多重要?
    QTP基础学习(二)启动与设置
    什么是基准测试?
    推荐几款热门的网站测试工具
  • 原文地址:https://www.cnblogs.com/kinmos/p/6829806.html
Copyright © 2011-2022 走看看