php性能优化

谭佳成
2016-03-04
(89)

性能问题主要体现在哪些地方:

  • 语法使用不当

  • 用php来做不擅长的事情

  • 用php语言连接的服务不给力

  • php自身的短板

  • 我也不知道的问题

解决方向(由易到难):

  1. php语言级的性能优化

  2. php周边问题的性能优化

  3. php语言自身分析优化

php语言级的性能优化:

A:少写代码,多使用内置函数。因为php脚本语句是按照从上到下从左到右的顺序执行,当上一个语句执行完成再继续执行,即所谓的串行化请求,所以某个功能实现的代码最好不要太多,容易出现问题。关于串行化的优化就是并行化,可以考虑使用clur_multi_*代替curl,或者swoole扩展

B:内置函数的优劣性,选择合适的内置函数。比如isset比array_key_exists快

C:尽可能的不使用想__set(),__get()这类魔法函数

D:少用或不用@错误抑制符。提示:可以通过php扩展vld查看opcode内存开销

E:合理使用内存。不需要的变量及时unset掉

F:实现相同功能时,选择函数代替使用正则表达式

G:避免在循环内做运算。比如

$length = count($arr);

for($i=0;$i<$length ;$i++){ coding.....}要优于

for($i=0;$i

H:减少计算密集型业务,但好像php7支持了。这是php自身缺陷造成,php更适合衔接webserver与后端服务,UI呈现

I:字符串使用单引号包,不用像双引号还要解析

PHP周边问题的性能优化

php架构有lamp,wamp,lnmp。则可以从硬件和软件两个大的方面进行分析

A:硬件,数据存在磁盘或内存,配置更好的磁盘或内存,减少文件类的操作

B:内存方面,建立缓存,ridis,网页静态化,memecache,smarty

B:apache,nginx的优化,打开Gzip模块压缩再输出,利:更快的获取数据,弊:增加cpu负担

C:数据库的优化,如果将数据库分离开又要考虑网络优化,dns加速等等

D:合理的设置网络请求,建议配置连接超时200ms,读超时800ms,写超时500ms

PHP自身语言的分析:

A:opcode cache php扩展apc

B:扩展实现,通过php扩展代替原php代码中高频的逻辑

C:runtime优化    hhvm

性能工具的推荐

A:apache自带的ab压力测试工具,window下dos命令行切换到apache安转目录bin文件下执行ab -n1000 -c100 http://www.baidu.com

-n1000表请求数1000,-c100表同时请求100 http://www.baidu.com需要的被测试网站

结果显示Requst per second值越大越好,time per request约小越好

B:xhprof

C:vld



如无说明,本站文章均为原创,转载或引用注明来源:https://93jc.cn/article/23.html