• PHP性能优化


    PHP性能优化
    一 什么情况下会产生性能问题
        1.php语法使用不恰当
        2.使用php做了它不擅长的事
        3.php语言连接的服务不给力
        4.php自身的缺陷
        5.其他问题
    二 为什么要解决php性能问题
      项目中或多或少都会有一些性能问题,php性能问题是其中一部分,占比一般30%-40%
    三 php性能优化的解决方向
      php语言级的优化
        1.少写代码,多用php自身能力   代码越长,执行时间越长
           1)使用内置函数,常量,变量  我们编写的代码要经过逐行检索然后放到自身引擎中,通过引擎编译最后执行,使用内置函数变量 预编译好的,节省编译时间,性能有了提升
           2)尽可能少用魔法函数   魔法函数性能并不佳,耗时较长
           3)错误抑制符  在底层操作代码会多出begin_silence和end_silence,会产生额外的开销,降低性能
        2.合理使用内存   大量使用内存会导致php运行缓慢,需要及时释放,小心使用内存。 可以利用unset()及时释放不使用的内存
        3.少用正则表达式   性能简单,需要回溯,开销大,性能低。可以利用字符串函数,代替正则
        4.避免在循环里面进行运算   可以将计算的表达式放到循环外,赋值给一个变量,再循环内直接使用变量
        5.减少密集型运算的业务  php适合衔接webserver和后端以及ui呈现,作为一个纽带的作用。webserver来请求,交给php,php做一些参数处理,将请求发给后端,等待后端相应,再将信息传递给webserver
        6.务必使用带引号的字符串来做键值   php会把没有引号的键当作值常量,然后找常量,把这个常量当作key值输出,会产生额外的开销
       php周边问题的优化
        周边的服务:网络环境,服务器环境,数据库环境等
        优化分类:
        1.减少文件类的操作  读写内存<<读写数据库<读写磁盘<读写网络数据    最好从内存中读取数据
        2.优化网络请求   
          1)设置超时时间(连接超时 200ms,读超时 800ms,写超时 500ms)
          2)将串行请求并行化   使用curl_multi函数
        3.压缩php接口输出   有利于数据输出,客户端能更快获得数据  压缩占用服务器cpu,会给cpu增加额外开销,重复字符多,压缩效果较好
        4.缓存重复计算内容   多次请求,内容不变  
               接收请求,查看缓存,没有缓存,进行查询,返回给缓存,返回
               接收请求,查看缓存,有缓存,返回
               缓存常用于项目中的模板 smarty支持caching  cache_start
        5.重叠时间窗口思想  执行完所有项目耗时少  当后面的项目不依赖前一个项目时可用
        6.旁路方案  后面项目不依赖于前一项目可用,可以有多个旁路
                  场景:smarty模板渲染和拼接
      php语言自身的分析,优化           底层C语言的分析优化
            利用opcode cache:可以用php扩展apc框架
        opcode cache:当解释器完成对代码的分析后,将他们生成可以直接运行的操作码。目的是避免重复编码,减少cpu和内存开销

      php性能问题的具体分析
         工具:XHProf  facebook开源的一个php轻量级的性能分析工具
               性能开销低,可以用在生产环境中,可以由程序开关控制是否进行profile

  • 相关阅读:
    Cookie的总结
    动态改变静态资源路径
    使用JS监听DOM元素的属性及动画、CSS过渡
    localStorage和sessionStorage使用及监听
    难理解的点---值方法和指针方法 + 接口赋值
    js关于精确判断数据类型的总结
    ivew版本4.5.0后ivu-row样式变更,导致布局错乱
    简述三种异步上传文件方式
    自然周算法-javascript实现
    时隔3年9个月,再看
  • 原文地址:https://www.cnblogs.com/lzlzlz/p/8039881.html
Copyright © 2020-2023  润新知