学习路之php--性能优化
一、php周边优化
二、代码级优化
- 变量管理
- 及时unset()释放大数组/对象,减少内存占用
- 局部变量访问速度比全局变量快约2倍,优先使用局部变量
- 大数组采用引用传递(&$var)避免内存
- 循环优化
- 预计算循环次数:
t o t a l = c o u n t ( total=count( total=count(array);
for($i=0; i < i< i<total; $i++) - 减少嵌套层级(超过3层需重构)
- 避免循环内执行SQL或复杂计算,改为批量处理
- 函数与类设计
- 内置函数(如str_replace)效率高于自定义实现
- 避免使用__get/__set等魔术方法,改用显式属性
- 静态方法调用比实例方法快约15%
- 字符串处理
- 单引号字符串解析速度高于双引号(不解析变量)
- 多重替换场景下,strtr性能优于str_replace3
三、数据库优化
1. 索引策略
- 为高频查询的WHERE/JOIN/ORDER BY字段建复合索引
- 避免索引失效:禁止对索引列运算(如WHERE price*2>100)
- 查询优化
- 严禁SELECT *,仅查询必要字段
- 用BETWEEN替代IN处理连续值
- 循环内多次查询合并为批量IN查询
3. 连接管理
- 使用连接池复用连接(降低80%连接开销)
- 批量插入时显式启用事务,减少自动提交次数
四、缓存机制
- 字节码缓存
开启OPcache(PHP 5.5+默认支持),配置建议:
opcache.enable=1
opcache.memory_consumption=128 ; 分配128MB内存:ml-citation{ref="8" data="citationList"}
opcache.max_accelerated_files=10000 ; 缓存文件数上限
- 数据缓存
- Redis缓存热点查询结果(支持复杂数据结构)
- Memcached存储简单键值(内存利用率更高)
- 页面缓存
- CDN加速静态资源(图片/CSS/JS)
- Varnish实现整页缓存
五、服务器与配置
- PHP版本升级
- PHP 8比7性能提升100%,JIT编译器优化计算密集型任务
- Web服务器选型
- Nginx + PHP-FPM组合性能优于Apache4
- 配置调优
- 动态调整memory_limit避免内存溢出8
- 设置max_execution_time限制脚本超时
六、异步处理
- 异步框架
Swoole/ReactPHP实现非阻塞I/O,提升并发能力10倍+
- 任务队列
RabbitMQ解耦耗时操作(如邮件发送、图片处理)
优化效果对比:
PHP 5.6 → 8.0:吞吐量提升100%+
启用OPcache:CPU负载降低50%
数据库查询优化:响应时间减少40%~70%