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

  

上图简单的描述了一个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

这里将从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()。详情见下表

5.opcode缓存

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

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

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

具体使用请查看相关资料

php高性能开发阅读笔记的更多相关文章

  1. java web开发阅读笔记:第一章

    学习该书前所用推荐书籍<名师讲坛—java开发实战经典> 一web开发前奏 1.1网页发展 首先搞懂. 1.HTTP:超级文本传输协议,是一种通讯协议. 通过这个网络协议WW浏览器与WWW ...

  2. 高性能Cordova App开发学习笔记

    高性能Cordova App开发学习笔记 文件结构 添加插件 构建准备 各个www的作用,prepare命令会将hello\www的内容会拷贝到platform下的wwww目录,知道该改哪里了吧?如果 ...

  3. QCon 2015 阅读笔记 - 移动开发最佳实践

    所有ppt下载地址:http://pan.baidu.com/s/1mg9o4TM 下面是移动开发实践部分的阅读笔记. 移动开发网络性能优化实践 - 陈浩然 (携程) 携程是非常标准的移动App架构, ...

  4. 《Windows内核安全与驱动开发》阅读笔记 -- 索引目录

    <Windows内核安全与驱动开发>阅读笔记 -- 索引目录 一.内核上机指导 二.内核编程环境及其特殊性 2.1 内核编程的环境 2.2 数据类型 2.3 重要的数据结构 2.4 函数调 ...

  5. 程序开发心理学阅读笔记——第I篇

    1.软件的任务是为了解决某一特定的问题,而软件开发者的任务却需要解决一系列问题.2.温伯格说,我们不能要求每个人都聪明异常,能够解决所有难题:但是我们必须持续思考,因为只有如此,我们才能明白自己在做什 ...

  6. 【前端】移动端Web开发学习笔记【2】 & flex布局

    上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...

  7. 阅读笔记 1 火球 UML大战需求分析

    伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本   <火球 UML大战需求分析>,首先 ...

  8. 《uml大战需求分析》阅读笔记05

    <uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...

  9. uml大战需求分析阅读笔记01

    <<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...

随机推荐

  1. ArcGIS API for JavaScript 4.2学习笔记[20] 使用参数查询要素(油井和地震关系)

    这个例子相当复杂.我先简单说说这个例子是干啥的. 在UI上,提供了一个下拉框.两个滑动杆,以确定三个参数,使用这三个参数进行空间查询.这个例子就颇带空间查询的意思了. 这个例子是干嘛的呢?第一个参数是 ...

  2. canvas画布

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  3. NPM(Node.js) 使用介绍

    前言:express 推出了4.X,自己尝试了一下,出现了各种问题.结果查看了各种文档和问题,现在在这个给大家分享下4.X版本的安装. NPM 使用介绍 NPM是随同NodeJS一起安装的包管理工具, ...

  4. shell脚本练习题

    下面列出了几个linux学习中的shell脚本题目 1.九九乘法表 #!/bin/bash echo "九九乘法表" # 注意((之间不能有空格.加减乘除的格式.还有转义字符\*. ...

  5. 用java写的一个程序,可以调用windows系统中自带的各种工具,例如截图,便签等

    由于图片资源没有上传,所以运行后不会有图片,感兴趣的同学可以@我,我打包上传, package SmallPrograme; import java.awt.*; import java.awt.ev ...

  6. 课堂博客-----TreeView+++++XML形成博客

    什么是XML? 解析:XML:Extensible Markup Language(可扩展标记语言) HTML:HyperLink Text  Markup Language(超文本标记语言) xml ...

  7. Android可以换行的布局

    本文讨论的是下图的这种数据展示方式 通过本文可以学到的内容 ===View绘制的工作流程measure和Layout,即测量和布局: ===动态创建和添加子View,以及设置点击事件的一种思路 1.主 ...

  8. 微信小程序,前端大梦想(四)

    微信小程序图片轮播及滚动视图 移动端常用效果图片轮播及数据列表已被小程序封装成了组件,这里和大家分享一下如何使用. Scroll-view   可滚动视图区域 Swiper       图片轮播容器 ...

  9. 关于css禁止文本复制属性

    最近在做DHTMLX框架替换,新框架dhx的grid是不能选中内容复制的 虽然相对来说是安全些的,但是客户体验度一定会大打折扣 网页上禁止复制主要靠JavaScript来实现.<BODY onc ...

  10. HTML在网页中插入音频视频简单的滚动效果

    每次上网,打开网页后大家都会看到在网页的标签栏会有个属于他们官网的logo,现在学了HTML了,怎么不会制作这个小logo呢,其实很简单,也不需要死记硬背,每当这行代码出现的时候能知道这是什么意思就o ...