最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

PHP性能优化:PHP周边性能优化

XAMPP新闻 admin 31浏览 0评论

PHP周边的问题分析:

PHP周边都有什么?

周边:

1、Linux运行环境

2、文件存储(SSD固态盘,普通硬盘)

3、数据库(MySQL)

4、缓存(Redis,Memcached)

5、网络(光纤?普通)

 

除PHP外的周边环境的性能好坏,会决定PHP的性能。

 

PHP优化要抓大头,分析出PHP自身和周边执行的效率,抓大头解决。

 

PHP周边性能优化:

一、减少文件类操作。

常见PHP常见的开销次序:

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

 

eg:读写内存 << 读写数据库 < 读写磁盘

 

读写内存的开销远远小于读写数据库。因为读写内存,是PHP底层直接操作内存,与本地磁盘没有交集,而读写数据库是操作的本地磁盘。

 

为什么读写数据库的开销,要小于读写磁盘?

答:常用的数据库都会将内存作为缓存,将要写到数据库的数据先缓存在内存中,之后异步将数据写入到磁盘。

 

例如写入一条数据,先是将操作指令写入内存中,写入成功之后将内存中的insert语句去操作本地数据库。

 

所以数据库开销介于内存和磁盘之间,数据库做了一下兼容,起了承上启下的作用。

 

eg:读写内存 << 读写数据库 < 读写磁盘 < 读写网络数据

 

那么读写磁盘开销为什么小于读写网络数据?

 

答:我们知道读写网络数据,其实是通过socket发起请求,那么socket使用的是本地文件句柄,而读写网络数据有一个隐性的因子,那就是网络延迟,延迟越大网络开销越大,应尽量减少网络开销。

 

PHP代码中应尽量减少网络请求。

 

虽然当代的磁盘技术越来越发达了,但是推荐尽可能的写数据库或内存数据库,而避免直接操作磁盘和网络数据,一定要规避读写很大的数据。

 

 

二、优化网络请求:

 

PHP请求网络接口怎么优化?

 

网络请求会遇到的坑:

1、对方接口的不确定因素(例如接口格式变动,导致数据识别错误)

2、网络的稳定性(每天20点到22点网络可能不稳定)

 

具体优化步骤:

1.设置超时时间

连接超时 200ms

读超时  800ms

写超时  500ms

2.将串行请求并行化

使用curl_multi_*();它有个问题,同时设置n个请求,那么返回的时间取决于响应返回最长的时间,但不是很好

使用swoole扩展(推荐)

 

做好这两点,那么接口会更高效。

 

三:压缩PHP接口输出

如何压缩?

使用Gzip即可(网上有很多资料)

 

压缩输出的利与弊?

利:利于我们的数据输出,Client端能更快获取数据

弊:服务器和客户端会产生额外的CPU开销。

 

数据大于100K,通过压缩可减少到30K。反之压缩效果差甚至会比压缩前数据还大。

 

*具体压缩知识可自行百度

 

 

四:PHP缓存复用

1、缓存重复计算内容

什么情况下做输出内容的缓存?

多次请求,内容不不变时

 

*使用Cache类,如果缓存命中,直接返回数据,否则从数据库读取、计算并返回。

 

*使用模板缓存(一般在响应HTML时,非接口)。

 

 

五:重叠时间窗口思想

只有在后一个任务不强依赖前一个任务时。

可参考缓存复用。

 

 

六:PHP旁路处理方案

与重叠时间窗口类似,但也有区别。

一般情况下是串行执行,那么旁路方案,在执行过程中某个节点分了两条路去执行。

 

 

七:PHP性能问题的具体分析

以上学习到了PHP语言级优化和周边问题优化,下面学习具体性能分析。

 

工具:XHPorf(源自Facebook的PHP性能分析工具)

 

实践:

通过分析WordPress程序,做优化。

 

 

*php –ri xhprof(扩展名) 检查扩展是否支持

 

XHPorf使用:

在代码中埋点。

xhprof_enable();开始、

 

$data=xhprof_disable();//返回了性能数据

 

//插入代码图片

zzzzzz48

*项目根目录xhp存放了性能分析视图展示文件。

 

其它工具推荐:

ab – 压力测试

vld – opcode代码分析

 

八:PHP性能瓶颈究极办法

Opcode Cache  APC扩展

转载请注明:XAMPP中文组官网 » PHP性能优化:PHP周边性能优化