其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

PHP性能优全面解析

GG网络技术分享 2025-03-18 16:17 0


PHP性能优化

  1. PHP语法使用的不恰当。

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

  3. 用PHP语言连接的服务不给力。

  4. PHP自身的短板。

  5. 我也不知道的问题。

PHP性能占比

  1. PHP性能问题,占用整个项目的整体性能30%-40%之间。

  2. PHP语言级的性能优化。

  3. PHP周边问题的性能分析。比如,服务器环境,硬件配置,数据库配置。

  4. PHP语言自身分析,优化。底层C的分析。

  5. 2、3、4是有简单到复杂的过程。

压力测试工具简介

Apache Benchmark(ab)

如何使用

./ab -n1000 -c100 http://www.baidu.com/

-n请求数 总共发起1000次请求

-c并发数 一次的并发量是100

url 目标压测地址

性能优化之前使用ab
性能优化之后使用ab
对比吞吐量和处理耗时
ab测试主要关注系统吞吐量 和 服务器处理时间这两个点。

PHP语言级性能优化

  1. 少些代码,多用PHP自身能力。

  2. 自写代码冗余比较多,可读性不佳,并且性能差。

  3. php代码需要编译解析为底层语言,这一过程每次请求都会处理一遍,开销大。

  4. 多使用PHP内置变量、常量、函数。

PHP代码运行流程

  1. PHP内置函数的性能优劣。

  2. 尽量少用魔法函数(为了给PHP程序员省事,PHP语言为你做了很多)
    产生额外开销的错误抑制符@
    情况描述:PHP提供的错误抑制符@只是为了方便懒人。会增加额外开销。
    vld PHP Opcode 查看扩展

1)合理使用内存

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

2)尽量少的使用正则表达式

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

3)避免在循环内做运算

循环内的计算式将会被重复计算。

$str = \"hello world\";

for($i=0;$i<strlen($str);$i++){

//do something strlen 会计算多次。

}

4)PHP不适合密集型运算场景

PHP的语言特性决定了PHP不适合做大数据量运算。

5)PHP适合衔接Webserver与后台服务,UI呈现。

6)务必使用带引号字符串做键值。

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

PHP周边环境

1)linux服务器
2)硬盘是硬件
3)mysql是软件
4)apache
5)内存

减少文件类的操作

PHP场景开销次序

  1. 读写磁盘

  2. 读写数据库

  3. 读写内存

  4. 读写网络数据
    读写内存 << 读写数据库 < 读写磁盘 < 读写网络数据(其实是磁盘操作+网络延迟)

优化网络请求

  1. 对方接口不确定因素。

  2. 网络稳定性。

  3. 设置超时时间,1、连接超时200ms,2、读超时800ms,3、写超时500ms

  4. 将串行请求并行化。使用 curl_multi_*();,使用swoole扩展。

压缩PHP接口输出

使用Gzip即可。压缩后更快传输数据,但是会产生额外的CPU开销。

缓存重复计算内容

多次请求内容不变情况。

重叠时间窗口理想

PHP是串行执行的。
前后任务没有强依赖关系,可以使用重叠时间窗口

旁路方案

xhprof 工具分析PHP性能。
https://www.jianshu.com/p/c420ebe6ce39

php性能瓶颈终极提升

Opcode Cache:PHP扩展APC,APC缓存PHP编译后的代码。
Runtime优化:HHVM

标签: 开销 性能

提交需求或反馈

Demand feedback