php高性能开发阅读笔记

时间:2023-01-14 03:17:30

1.http请求与响应的简单流程

php高性能开发阅读笔记  

上图简单的描述了一个http请求与响应的过程,首先是用户请求过程,这是该生命周期的第一部分,用户发起请求,经过路由器与ips网关和dns服务器(域名服务器),通过web服务器向应用程序发起请求,其次是服务器响应过程,这是该生命周期的第二部分,一旦请求web服务器之后web服务器便通过获取并且格式化数据来准备响应,然后web服务器将数据打包成多个数据包并以相反的顺序沿着用户请求相同的路径发送给用户,如果数据量足够大,那么就将数据打包成多个包并发送。

2.ab压力测试工具

apache benchmark(ab)工具是最著名的压力测试工具,它是apache中默认安装的一部分(在windows  web环境中也可以使用),它可以通过模拟对特定的url的任意请求数量来对web服务器进行附载测试,ab工具能够提供如下信息:

(1)传输的总数据大小 -以字节为单位

(2)web服务器在模拟流量下每秒可以支持的请求总数

(3)完成一个请求所花费的最长时间-.毫秒为单位

(4)完成一个请求所花费的最短时间-以毫秒为单位

具体操作请查看相应资料   http://www.cnblogs.com/mydomain/p/3166191.html

除ab压力测试工具外还有一些压力测试工具  例如:siege,webbench  在这里就不多说了

3.提高客户端下载和呈现能力

前端是php应用程序的第一层,具体如图2-1

php高性能开发阅读笔记

这里将从web浏览器的角度分析web服务器的响应,具体来说有多种工具能帮助我们分析网站的响应(firebug  yslow 和page speed),它们能提供以下信息

(1)web服务器发送的响应细节时间

(2)分析javascript中前端逻辑

(3)浏览器将读取的资源的逐项列表

(4)浏览器获取和接收资源所花费的时间

(5)对如何优化响应的建议

第二个工具集(YUI Compreesor ,Closure Compiler和Smush.it)将帮助我们优化响应,简言之,我们可以借助这些工具来压缩javascript,css和网页所需的图像。对于网页的优化对于用户浏览十分重要,例如某个用户加载3M的网页,响应中含有30个未缓存的大图片,臃肿的css和无数的javascript文件,而这些东西网页根本就不需要,不管你在php方面做了多少优化,用户依然要完成3M的响应才可以看到这个页面,如果标准的dsl调制解调器(1m/s),那么下载一个3m的需要一分钟,一项调查表明,用户等待页面加载的平均时间最多为4s,所以,在一分钟的情况下,56秒是难以忍受的,这可能会让你失去这个用户。

具体的firebug,yslow,page speed的使用请查看相关资料。

4.php代码优化

php已经目前已经完成了许多性能调整增强,因此旧版本也将得益于这些代码实践

(1)使用require与require_once的对比,经对比,require性能高于require_once

(2)提前计算for循环的长度

(3)比较for,foreach,while 访问数组元素时的性能  foreach高于while高于for

(4)文件访问问题,php有四种从文件中读取数据的方法,fread(),file_get_contents(),file()和readfile。其中fread(),file_get_contents(),readfile()是以字符串形式输出,只有file_get_contents()将文件缓存到内存中,以便更快的进行读写操作,这种方式叫做内存映射。file_get_contents()在读取系统小文件时,性能得到很大提升。说明,读取小文件(3.6k)的时候fread()高于file_get_contents(),读取大文件的时候(2.3M)时file_get_contents()高于fread()。详情见下表

php高性能开发阅读笔记

5.opcode缓存

现在为了加快php的运行速度,我们要做的是当php被请求时删除所有不必要的进程,我们可以通过删除php生命周期无需常规执行的进程来优化程序,从而使用户的请求可以被更快的响应。添加opcode缓存能有效的删除php生命周期中无需常规执行的进程从而来进行优化程序。下图说明php生命周期

php高性能开发阅读笔记

这是一个完整的php生命周期,php的生命周期非常短暂,但是每次请求php脚本时,php必须执行这五个步骤,如图所示。zend引擎必须从文件系统中读取相应文件,扫描其表达式和词典,解析文件,创建成计算机所能够执行的编码(opcode),最后执行opcode。对于脚本的初次请求这个时必要的,但后续无需此操作,如果实现opcode缓存,我们就可以缩短三个步骤来缩短php的生命周期,从而提高应用程序的性能。如下图

php高性能开发阅读笔记

现在只说说三种有效的opcode缓存技术,alternative php cache(APC),Xcache,eAccelerator(eA),其中一些缓存技术不仅仅是opcode。

具体使用请查看相关资料