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

posted @ 2017-12-14 20:49  wuli_max  阅读(1244)  评论(1编辑  收藏  举报