什么情况,可能遇到性能问题:

1.php语法使用的不恰当

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

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

4.php自身的短板

5.我也不知道的问题

一般情况:php性能问题不超过二分之一(一般30%~40%)

php性能问题解决方向:

php语言级的性能优化—>php周边问题的性能优化(连接的服务,网络环境)—>php语言自身分析和优化

(php语言级)

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

问题:自写代码冗余较多,可读性不佳,导致性能低

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

方法:多使用php内置变量、常量、函数

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

情况描述:php内置函数,之间依然存在快慢差异

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

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

情况描述:php提供的魔法函数,性能不佳

为什么性能低:为了为php程序员省事,php语言为你做了很多

好的方法:尽可能规避使用php魔法函数

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

实际逻辑:在代码开始前,设置报错级别最高,结束后,再回复设置报错级别。增加Opcode,忽略报错

优化点:合理使用内存

情况描述:php有内存回收机制保底,但也请小心使用内存

建议:利用unset()及时释放不适用的内存(注:unset()出现注销不掉的情况)

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

情况描述:正在表达式的回溯开销较大,“没有金刚钻别揽陶瓷活”

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

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

情况描述:循环内的计算式将会被重复计算

<?php

$str="hello world";

//strlen($str)放在外面

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

//do something

}

?>

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

情况描述:php不适合密集型运算的场景

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

php适合场景:适合衔接Webserver与后端服务、UI呈现

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

情况描述:php会将没有引号的键值当作常量,产生查找常量的开销

建议:严格使用引号作为键值

--------------------------------------------

(php周边问题的性能优化)-

运行环境,文件储存,数据库,缓存,网络

减少文件类操作

常见php场景的开销次序:

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

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

优化网络请求

网络请求的坑:

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

2.网络稳定性

如何优化网络请求?

1、设置超时时间

a)连接超时  200ms

b)读超时    800ms

c)写超时    500ms

2、将串行请求并行化

a)使用curl_multi_*()

b)使用swoole扩展

压缩php接口输出

缓存重复计算内容

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

多次请求,内容不变情况

重叠时间窗口思想

旁路方案

分析php自身分析和优化:

用工具测试

PHP性能瓶颈解决方法:

Opcode cache(代码编译的最后一个环节进行缓存)PHP扩展APC做Opcode缓存用的

补充压力测试软件使用说明:

Ab -h

apache Benchmark(ab)由Apache提供的压力测试软件,安装apache服务器时会自带该压测软件

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

-n请求数   -c并发数   url目标压测地址

简单的php性能注意点的更多相关文章

  1. 10种简单的Java性能优化

    你是否正打算优化hashCode()方法?是否想要绕开正则表达式?Lukas Eder介绍了很多简单方便的性能优化小贴士以及扩展程序性能的技巧. 最近“全网域(Web Scale)”一词被炒得火热,人 ...

  2. 【转】10种简单的Java性能优化

    10种简单的Java性能优化 2015/06/23 | 分类: 基础技术 | 14 条评论 | 标签: 性能优化 分享到: 本文由 ImportNew - 一直在路上 翻译自 jaxenter.欢迎加 ...

  3. 10种简单的Java性能优化(转)

    本文由 ImportNew - 一直在路上 翻译自 jaxenter.欢迎加入翻译小组.转载请见文末要求. 你是否正打算优化hashCode()方法?是否想要绕开正则表达式?Lukas Eder介绍了 ...

  4. ListView的简单使用和性能优化

    起源:ListView是Android开发中使用最广泛的一种控件,它以垂直列表的形式显示所有列表项. 创建ListView有两种方式: ☆ 直接使用ListView进行创建. ☆让Activity继承 ...

  5. 11 个简单的 Java 性能调优技巧

    大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识.好吧,不能说这是完全错误的.优化应用程序以获得最佳性能不是一件容易的事情.但是,这并不意味着如果你不具备这些知识,就不能做任何事情.这 ...

  6. 11个简单的Java性能调优技巧,傻瓜都能学会!

    大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识.好吧,不能说这是完全错误的.优化应用程序以获得最佳性能不是一件容易的事情.但是,这并不意味着如果你不具备这些知识,就不能做任何事情. ...

  7. Jackson和fastjson简单用法及性能对比

    背景: Java处理JSON数据有三个比较流行的类库FastJSON.Gson和Jackson.fastjson是阿里做的国有开源Java工具包,jackson是spring mvc内置的json转换 ...

  8. 一个简单web系统的接口性能分析及调优过程

    在测试一个简单系统接口性能压力时,压到一定数量,程序总是崩溃,查看相关机器相关数据时,CPU.内存.IO占用均不高,问题自然出现在其它地方先介绍下系统部件架构 Resin版本为:[root@local ...

  9. 使用 ContentProviderOperation 来提升性能

    ContentProviders  是android 系统核心组件之一,ContentProviders 封装了数据的访问接口,其底层数据一般都是保存在数据库中或者保存在云端. 有时候你需要更新多行数 ...

随机推荐

  1. mysql表导入到oracle

    一.创建jack表,并导入一下数据 mysql),flwo )) engine=myisam; Query OK, rows affected (0.08 sec) mysql> load da ...

  2. [C++]C++标准里 string和wstring

    typedef basic_string<char> string; typedef basic_string<wchar_t> wstring; 前者string是常用类型, ...

  3. Spark函数

    这张图不错!

  4. 20150618_Andriod _set Dialog_弹出式菜单

    参考地址: http://blog.csdn.net/zhyl8157121/article/details/8169172                   http://blog.csdn.ne ...

  5. Uva 1626,括号序列

    题目链接:https://uva.onlinejudge.org/external/16/1626.pdf 题意: 给定一个字符串,看是否括号匹配,不匹配加括号,加最少的括号使得匹配.输出该结果. 分 ...

  6. ural 1109,NYOJ 239,匈牙利算法邻接表

    NYOJ 239:http://acm.nyist.net/JudgeOnline/problem.php?pid=239 ural 1109 :http://acm.timus.ru/problem ...

  7. SharePoint API测试系列——对Recorded Item做OM操作(委托的妙用)

    转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 对Recorded Item动态调用OM Methods进行测试,界面如下: 输入Site的URL ...

  8. 遍历对象的list删除时报错问题。

    我们对一个对象的list或者map进行删除操作时,可能会这么写 for(Distributor distributor:distributorList){ String distributorShor ...

  9. Codeforces Round #370 (Div. 2) C

    Description Memory is now interested in the de-evolution of objects, specifically triangles. He star ...

  10. sql通用分页自定义表条件存储过程

    create PROCEDURE PrcTestByPage ( @tablename varchar(50), @selectfilter varchar(100), @orderbyfilter ...