LLEARNING NOTES

技术 · 思考 · 实践 · 成长

首页/PHP/正文

PHP性能优化

PHP622 次阅读

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、设置超时时间

链接超时

读超时

写超时


若无人替你披荆斩棘,那就独自前行栉风沐雨。

评论交流

理性讨论,共同进步
验证码
访客头像
访客 #492024-06-26 09:06:58
https://blog.csdn.net/qq_39236157/article/details/131411868
访客头像
访客 #482024-06-26 05:06:18
真的很好啊
访客头像
访客 #372021-09-28 02:09:23
fadf
访客头像
访客 #362021-09-28 02:09:32
aaa
访客头像
访客 #352021-09-28 02:09:34
测试
访客头像
访客 #342021-09-27 04:09:08
bbbb
访客头像
访客 #332021-09-27 03:09:19
真的吗
访客头像
访客 #312021-09-27 03:09:50
今天天气真好
访客头像
访客 #272021-09-27 03:09:02
fadfadf
访客头像
访客 #262021-09-27 03:09:59
aaa
访客头像
访客 #252021-09-27 03:09:14
这是一条内容1
访客头像
访客 #242021-09-27 03:09:50
这是一条内容

相关文章

继续阅读