PHP性能优化的几个方向

1、什么情况下PHP遇到了性能问题

1)PHP语法使用不当

2)使用PHP语言做了它不擅长的事

3)使用PHP语言连接的访问不给力

4)PHP自身的短板

5)未知的原因

常见的PHP场景的开销次序:

 读写内存、读写数据库(基于硬盘,加了缓存)、读写磁盘、读写网络数据(读写硬盘+网络延迟)(开销大的速度快)

PHP性能的问题其实或许只占整体项目性能问题的不足40%

PHP性能问题的解决方向:

1)PHP语言级的性能优化 ( PHP语句优化 )

  a. 少写代码,多使用PHP自身的函数 PHP代码需要编译解析为底层语言,这一过程每次请求都会处理一遍,开销大

多使用PHP内置的函数 常量和变量,注意PHP内置函数间依然会有性能的差异 eg isset在判断键是否存在时,效率会比array_key_exists的效率要高一些,所以应该多去了解PHP内置函数的时间复杂度

b. 减少PHP魔法函数的使用,PHP为了方便程序员,做了很多的事,magic method使程序书写简单,但是效率会变低 eg __get() 循环100万次大概是2.5的差异,使用time方法可以直接计算系统耗时

c. 禁用错误抑制符@  file_get_contents测试

   @会在opcode中增加opcode(BEGIN_SLIENCE)忽略报错,在函数结束后增加end_slience开启报错

d. 合理的使用内存和正则表达式

   合理使用内存,使用unset及时释放不需要的内存

  正则表达式的回溯开销大,尽量利用字符处理函数来实现相同的逻辑

e. 避免在循环内做运算,会被重复计算

f. 减少密集计算型的业务 不适合做大数据量的运算,适合作为wbserver与后端衔接,与模板引擎配合做UI呈现

g. 务必使用带引号的字符串做键值key(否则会先查找PHP的常量集)

2)PHP周边问题的性能优化

    PHP周边都要有什么?

    Linux环境 (服务器性能)、 文件存储(硬盘性能) 、数据库(数据库性能) 、 内存、缓存(数据读取)、网络(涉及远程调用时)

 a. 减少文件类的操作

 b. 优化网络请求

    1)设置超时时间  a.连接超时200ms  b.读超时800ms   b.写超时500ms

    2)将串行请求并行化 a.使用curl_multi_*,依赖于最慢的请求 b.使用swoole扩展

c. 压缩PHP接口输出  使用gzip压缩  利于我们的数据输出,但会产生额外的CPU开销

d. 缓存重复计算的内容   多次请求的内容不发生变化,有cache就读cache,无cache则计算,常用于模板 eg Smarty模板引擎

3)PHP语言自身的分析优化 ( PHP底层语言C语言性能优化 )

APC  XHprof  YAC等

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值