php性能优化的几个方法

1400阅读 0评论2014-09-24 gron
分类:LINUX

 转自:
网上有无数关于
性能的优化技巧,有必要列出一张可供参考使用的清单。 收集的这些技巧来源较广,完整性不能保证。 由于数量较多,这些优化技巧没有经过测试。请各位看官在使用之前自行测试,毕竟这些技巧是否能派上用场,还是需要由PHP所在的独特环境所决定的。
  


找到瓶颈(Finding the Bottleneck)

面对一个性能问题是,第一步永远是找到问题产生的原因,而不是去看技巧列表。搞明白产生瓶颈的原因,找到目标并且实施修复,然后再重新测试。查找瓶颈只是万里长征的第一步,这里有些常用技巧,希望对最重要的第一步找到瓶颈能有所帮助。

缓存 (Caching)

有些人认为缓存是解决性能问题最有效的办法之一,试试这些:

编译 vs. 解释(Compiling vs. Interpreting)

将PHP源码编译成机器码。动态解释执行同样的编译,但它是按行执行的。编译为opcode是折中选择,它可以将PHP源码翻译为opcode,之后opcode再转为机器码。以下为关于编译与解释的相关技巧:

代码减肥 (Content Reduction)

越少越块。 这些技巧可以帮助减少代码:

多线程与多进程(Multithreading & Multiprocessing)

由快到慢依次为:

  1. 多线程(单一进程中)
  2. 多进程(比如,pcntl_fork,计划任务)
  3. 单进程(一行又一行)

PHP不支持多线程,但是可以用C写多线程的PHP扩展。有一些办法可以使用多进程或模拟多进程,但支持的并不是很好,没准儿比单进程还慢。

字符串(Strings)

字符串处理,是大多数编程语言中最常用的操作之一。这里有些技巧可以帮我们让字符串处理速度更快一些:

正则表达式(Regular Expressions)

正则表达式为们带来了灵活多样的比较与查找字符串的方法,单他的性能开销却着实不低

迭代结构 (Iteration Constructs (for, while))

迭代(重复,循环)是最基本的结构化编程方法,很难想像有不使用它的程序。这里有些技巧,帮助我们改进迭代结构的性能:

选择结构 (Selection Constructs (if, switch))

与迭代结构相同,选择结构也是最基本的结构化变成方法。以下技巧或许能改善性能:

函数与参数 (Functions & Parameters)

将函数的代码分解成小函数代码可以消除冗余,让代码具有可读性,但代价是什么?这里有些技巧,以帮助更好的使用函数:

面向对象结构 (Object-Oriented Constructs)

PHP的面向对象特性,可能会影响到性能。以下提示可以帮助我们尽量减少这种影响:

Session处理 (Session Handling)

创建sessions有很多好处,但有时会产生没必要的性能开支。以下技巧可以帮助我们最大限度减少性能开支:

类型转换 (Type Casting)

从一种类型转换为另一种类型需要成本

压缩(Compression)

在传输前,压缩文本和数据:

错误处理(Error Handling)

错误处理影响性能。我们能做的是:

声明、定义与范围(Declarations, Definitions, & Scope)

创建一个变量、数组或者对象,对性能都有影响:

内存泄漏(Memory Leaks)

如果内存分配后不释放,这绝对是个问题:

不要重复发明轮子(Don’t Reinvent the Wheel)

为什么要花费时间去解决别人已经解决的问题?

代码优化(Code Optimization)

使用RAM(Using RAM Instead of DASD)

RAM比磁盘快很多很多,使用RAM可以提升一些性能:

使用服务(Using Services (e.g., SQL))

SQL经常被用来访问关系型数据库,但我们的PHP代码可以访问许多不同的服务。下面是一些访问服务是需要牢记的:

安装与配置(Installation & Configuration)

安装与配置PHP时,请考虑性能:

其他(Other)

还有些技巧比较难归类:

上一篇:网卡失效 eth0 error - net sched sch_generic
下一篇:APACHE安装配置说明