PHP性能优化

初探
  什么情况下遇到php性能问题
    php语法使用不恰当
    使用php做它不擅长的事情
    php语言连接的服务不给力
    php自身的短板
    我也不知道的问题
  Apache自带压力测试工具ab
    ./ab -n1000 -c100 http://www.baidu.xom
    -n 请求数 -c并发数
性能问题解析
  性能优化项目,不要局限于仅优化php
  php性能问题解决方向
    php语言级的性能优化
      少写代码,多用php自身能力
      多使用php内置变量、常量、函数等
        php运行流程
          .php->scanner->Exprs->Parser->Opcodes->Exec->Output
      php内置函数的性能优劣:
        多去了解php内置函数的时间复杂度
        isset()性能比array_key_exists()好
      尽可能少用魔术方法
      产生额外开销的错误抑制符@
        php opcode扩展
      合理使用内存
        利用unset()及时释放不使用的内存
      尽量少的使用正则表达式
        利用字符串处理函数,实现相同逻辑
      避免在循环内做运算
      减少计算密集型业务
        适合衔接websever与后端服务、UI呈现
      务必使用带引号字符串做键值
    php周边问题性能优化
      问题所在
        linux运行环境
        文件存储
        数据库
        缓存
        网络
      优化方法
        减少文件类操作
          读写内存<<读写数据库<读写磁盘<读写网络数据
        优化网络请求
          网络请求的坑:
            对方借口的不确定因素
            网络稳定性
          优化方式
            设置超时时间:连接超时(200ms)、读超时(800ms)、写超时(500ms)
            将串行请求并行化
              使用curl_multi_*()
              使用swoole扩展
        压缩php接口输出
          如何压缩:使用Gzip
          压缩利与弊
            利:利于数据输出,客户端更快获取数据
            弊:额外的CPU开销
        缓存重复计算内容
          多次请求内容不变情况下
        重叠时间窗口思想
        旁路方案
    php语言自身的分析优化
      工具:
        XHPort-源自facebook
        vld-opcode代码分析
        ab-压力测试
    php性能瓶颈解决方法
      Opcode Cache:php扩展APC
      扩展实现:通过php扩展代替php代码中高频逻辑
      Runtime优化:HHVM

posted @ 2018-11-13 17:53  井梅0709  阅读(166)  评论(0编辑  收藏  举报