PHP性能优化需从四方面入手:①减少函数调用与重复计算,如循环外预存date()结果、用空字符串判断替代strlen();②启用并合理配置OPcache;③优化数据库查询,避免N+1、加索引、精简字段;④精简输出并启用Gzip压缩。

减少不必要的函数调用和重复计算
PHP中频繁调用如 date()、microtime() 或自定义的高开销函数,尤其在循环内,会显著拖慢执行速度。比如在遍历1000条记录时每次都调用 date('Y-m-d') 获取当天日期,不如提前赋值一次复用。
建议做法:
- 把循环外能确定的值提前计算并缓存到变量中
- 避免在条件判断里反复调用函数,例如 if (strlen($str) > 0) 改为 if ($str !== '')
- 用 isset() 替代 array_key_exists() 判断键是否存在(前者更快且不触发autoload)
合理使用opcode缓存(如OPcache)
PHP每次请求都要将脚本编译成opcode再执行,开启OPcache后可直接复用已编译的opcode,跳过解析和编译阶段,提升响应速度30%~50%以上。
关键配置建议:
立即学习“PHP免费学习笔记(深入)”;
- 确保 opcache.enable=1 和 opcache.enable_cli=1(CLI模式下也启用)
- 设置足够大的 opcache.memory_consumption(如128或256MB)避免频繁淘汰
- 启用 opcache.revalidate_freq=0(生产环境关闭文件变更检查),或设为较大值(如60)降低校验频率
优化数据库交互与查询逻辑
多数PHP性能瓶颈实际来自数据库——慢查询、N+1问题、未加索引、过度JOIN等。
实用改进点:
- 用 EXPLAIN 分析SQL,确保WHERE、ORDER BY字段有合适索引
- 避免在循环中执行SQL(典型N+1),改用一次性JOIN或IN查询批量获取
- 只查需要的字段,不用 SELECT *;大文本字段(如content)单独按需加载
- 对高频读接口,考虑加Redis缓存查询结果,过期时间结合业务设定
精简输出与启用Gzip压缩
页面体积过大不仅增加传输时间,也延长PHP生成输出的耗时(尤其模板渲染+字符串拼接多时)。
可立即生效的操作:
- 开启PHP内置gzip:在脚本开头加 ob_start('ob_gzhandler'),或更推荐在Web服务器层统一配置(Nginx/Apache)
- 减少模板中冗余HTML空格、注释;用 echo 合并输出,少用多次字符串拼接
- 静态资源(CSS/JS)合并压缩,利用浏览器缓存(设置合理的Expires或Cache-Control头)
基本上就这些。不复杂但容易忽略。
以上就是PHP性能优化常见方法_PHP程序提速关键技巧的详细内容,更多请关注php中文网其它相关文章!