计算机网络/计算机科学与应用/系统/运维/开发

PHP性能优化

PHP性能问题



php 性能问题解决方向

php语言级性能优化

php周边问题性能优化

php语言自身分析、优化


压力测试工具

ab

apache提供的压力测试软件,安装apache自带压测

如何使用

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

     -n请求数

     -c并发数

-url目标压测地址


#ab -help

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


Request  per  request: 没秒接受请求数

Time  per  request:越小越好


php语言级性能优化

优化点:少写代码,多用php自身能力

性能问题:自身代码冗余较多,可读性不佳,并且性能低

为什么性能低?

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

好的方法:

多实用php内置变量、函数、常量

ab压测实战

公网服务器测试

ab -n100  -c10  http://ip地址/bad.php 


php代码运行流程

.php ->  Scanner->Exprs->Parser->Opcodes->Exec->Output 

优化点:php内置函数的性能优劣

php内置函数 之间 依然存在快慢差异

建议:多了解php内置函数的时间复杂度

举例:

isset()  array_key_exists()方法间的性能差异

优化点:尽可能少用魔法函数

php提供的魔法函数,性能不佳

为什么性能低? 

为了给php省事

好的方法:

尽可能规避魔法函数

linux time 观察时间

#time  php  test_magic.php  

举例: 

测试魔法函数__get()性能 

优化点:产生额外开销的错误抑制符@ 

描述:只是为了方便

@的实际逻辑:

在代码前,结束后,增加Opcode,忽略报错

vld -PHP  Opcode 扩展

建议尽量不要使用@错误抑制符


优化点:合理使用内存

php有内存回收机制保底,小心使用内存

建议unset()及时释放不需要使用的内存(unset出现注销不掉的情况)


优化点:尽量少使用正则表达式

回溯开销较大


优化点: 避免在循环内做运算

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


优化点:减少计算密集型业务

php不适合密集型运算场景 

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

适合衔接webserver与后端服务、UI呈现

优化点:务必使用带引号字符串做键值

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


php周边都有什么?

Linux环境

文件存储

数据库

缓存

网络

减少文件类操作

常见php场景的开销次序:

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

读写内存 << 读写数据库

优化网络请求

如何优化网络请求?

1、设置超时时间

链接超时

读超时

写超时


世上最好的保鲜就是不断进步,让自己成为一个更好和更值得爱的人。

评论

image

49 2024-06-26 09:06:58

https://blog.csdn.net/qq_39236157/article/details/131411868

回复 删除

image

48 2024-06-26 05:06:18

真的很好啊

回复 删除

image

37 2021-09-28 02:09:23

fadf

回复 删除

image

36 2021-09-28 02:09:32

aaa

回复 删除

image

35 2021-09-28 02:09:34

测试

回复 删除

image

34 2021-09-27 04:09:08

bbbb

回复 删除

image

33 2021-09-27 03:09:19

真的吗

回复 删除

image

31 2021-09-27 03:09:50

今天天气真好

回复 删除

image

27 2021-09-27 03:09:02

fadfadf

回复 删除

image

26 2021-09-27 03:09:59

aaa

回复 删除

image

25 2021-09-27 03:09:14

这是一条内容1

回复 删除

image

24 2021-09-27 03:09:50

这是一条内容

回复 删除

^