前言
PHP 本身已经是一种非常快速的语言,不过除了执行速度,PHP仍然有许多可以被优化的地方。
在本文中我们将介绍一下几点:
1.
为什么中PHP中优化过程中有许多因素是和代码没有关系的
2.
在提升PHP性能的过时中,为什么我们还需要了解更多的关于其它方面的知识
3.
系统中导致瓶颈的原因以及解决的方法
4.
我们还讨论如何调整以及优化PHP代码以使其拥有更佳的性能
瓶
颈
在脚本
hare
和
tortoise
的例子中可以看出是“瓶颈”导致了性能的降低。如果我们有无限的内存,
hare
将永远比
tortoise
快,可事实并非如此!上面的模型过于的简单,实际上,除了内存以外还有许多影响性能的瓶颈,它们包括:
1.
网络
你的网络可能是最大的瓶颈,假设你有一个
10M
带宽的网络,同时每秒钟可以传输
1M
的数据。那么,当每个页面有
30k
时,仅仅每秒钟
33
个
web
页面的流量就能让你的线路饱和。
还有其它许多微妙(
subtle
)的网络瓶颈包括:访问慢速的服务器(比如
DNS
)或者没有给网络软件分配足够的内存。
2.
cpu
要是你曾监视你的
cpu
负载你就会发现:一个静态页面不会给
cpu
带来过多的负担,此时瓶颈仅仅存在于网络。然而,对于一个由
php
创建的动态页面,你的
cpu
就会成为一个限制性能的因素。拥有强劲的处理器将可以减轻这种负担。
3.
共享内存
共享内存被用来进行进程间通讯以及存储可被多个进程访问的资源(比如:数据缓存区和程序代码)。然而,如果没有分配足够的共享内存,那么任何对于该内存区的访问将变的十分迟缓。
4.
文件系统
从硬盘读取数据的速度大约比从内存读取数据要慢
50
到
100
倍。通过在内存中设置文件缓冲区来解决这个问题。然而,在内存不是很“富裕”的时候,就要减少文件系统的缓冲区大小。
如果文件系统中有过多的碎片,通常也会降低对数据读取的效率。在
Linux
或
Unix
系统中,过多的使用符号连接也是降低磁盘性能的一个因素。
默认的
Linux
安装因为默认把硬盘设置成为兼容性而优化而非为速度而优化而声名狼藉,可以使用命令
hdparm
来调整你硬盘的设置。
5.
进程管理机制
一些操作系统(像
Windows
)创建新进程是很费时的,这意着在这些系统中,
CGI
应用程序为每个请求产生一个新进程将是个十分缓慢的操作。将
PHP
运行在多线程模式下将可以提升反应的时间。
避免在你的
web
服务器中有过多的无用进程。比如:如果你的服务器是纯粹的
web
服务器,就因该在这台机器上阻止允许(甚至不必安装)
X
-
Window
。在
Windows
环境下,可以取消微软的“快速检索”(
Office
的一部分)功能同时取消占用
100
%
CPU
的三维屏幕保护。
考虑卸载掉以下这些程序:没用的网络协议、邮件服务器、病毒扫描软件、多余的鼠标驱动,红外线端口驱动等等。在
Unix
环境下,假设你使用
SSH
登陆服务器,则可以考虑删除:没用的精灵进程(比如:
telnetd, inetd, atd, ftpd, lpd, sambad
)、
NFS
的接口映射、
xfs
、
fvwm
、
xinit
、
X
。
你还能够通过编辑启动文件来禁用那些开机时没用的程序。这个文件通常存储在
/etc/init*
或者
/etc/rc*/init*
文件夹下。
回顾一下那些重复的工作,思考下是否能够移出一些或制定一个周期性的计划。
6.
连接到其它服务器
如果你的
web
服务器要在其它服务器上运行一些服务,就可能变成影响性能的瓶颈之一。最常见的一个例子就是一个慢速数据库服务器处理过多的来自其它的
web
服务器的
SQL
请求。