PHP性能优化解决方案

一、PHP语言级性能优化

  • 少写代码,多用PHP自身的能力

自写代码冗余较多,可读性不佳,并且性能低。多使用PHP内置函数、变量、常量

  • PHP内置函数的性能优劣

PHP内置函数之间依然存在快慢差异,多了解PHP内置函数的时间复杂度。如 isset() 与 array_key_exists()差异

  • 尽可能少用魔法函数

PHP魔法函数,性能不佳

  • 产生额外开销的错误抑制符@

在代码开始前、结束后,增加opcode,忽略报错。建议尽量不要使用@错误抑制符

  • 合理使用内存

PHP有内存回收机制保底,但也要小心使用内存。利用unset()及时释放不使用的内存。

  • 尽量少用正则表达式

利用字符串处理函数,实现相同逻辑

  • 避免在循环内做运算
  • 减少计算密集型运算的场景

PHP不适合做密集型运算的场景,适合衔接webserver与后端服务,UI呈现。

  • 务必使用引号字符串做键值

PHP会将没有引号的键值当作常量,产生去查找常量的开销。

二、PHP周边问题的性能优化

主要从Linux运行环境、文件存储、数据库、缓存

  • 减少文件类的操作

读写内存 << 读写数据库 < 读写磁盘 < 读写网络数据

  • 优化网络请求

①对方接口的不确定因素 ②网络的稳定性

如何优化网络请求?

  1. 设置超时时间(连接超时 200ms 读超时 800ms 写超时 500ms)
  2. 将串行请求并行化(a.使用curl_multi_*()   b. 使用swoole扩展)
  • 压缩php接口输出 (gzip压缩)
  • PHP缓存复用
  • smarty 调优和重叠时间窗口思想
  • PHP旁边处理方案

三、PHP性能问题具体分析

工具:XHPorf

ab – 压力测试

vld – opcode代码分析