说说php优化那些事

操作方法

  • 01

    我们在编写程序时,总是想要使自己的程序占用资源最小,运行速度更快,代码量更少。往往我们在追求这些的同时却失去了很多东西。下面我想讲讲我对PHP优化的理解。优化的目的是花最少的代价换来最快的运行速度与最容易维护的代码。进行大范围的优化,而不是死啃某些程序代码  我这里所说的优化,基本上都是从服务器,Apache,数据库这些方面来进行的优化,而并不是对你的PHP代码加以改进从而提高程序的运行速度,因为 比起你将程序中的正则优化为字符串处理函数从而提升程序速度来说,在大范围内进行的优化所需要的代价要比这个小的多,而获得报酬却要丰厚的多。  在非代码处进行优化有以下好处:1、通常情况下能够大大提高效率  2、不会危及到代码的完整性  3、能够快速部署  缓存技术  下面来说说常用的缓存技术,通过这些缓存技术能够大大的提高效率  在说到缓存技术的时候不得不提到memcached ,memcached是高效、快速的分布式内存对象缓存系统,主要用于加速 WEB 动态应用程序。Memcached的原理  memcached 是以守护程序方式运行于一个或多个服务器中,等待接收客户端的连接操作,客户端可以由各种语言编写(例如PHP)。PHP 等客户端在与 memcached 服务建立连接之后,接下来的事情就是存取对象了,每个被存取的对象都有一个唯一的标识符 key,存取操作均通过这个 key 进行,保存到 memcached 中的对象实际上是放置内存中的,并不是保存在 cache 文件中的,这也是为什么 memcached 能够如此高效快速的原因。  说完memcached,下面来说说常用的缓存方法1、编译与OPCODE缓存  因为PHP是解释型的语言,所以每个PHP文件在运行的时候都需要编译后再执行,同一个文件,不同的用户访问,或者同一个用户不同时间访问同一个文件,每次都需要重新编译然后运行,这样就耗费了大量时间。  通过编译缓存每个文件在修改之后只编译一次这样就减少了文件IO操作,用户访问后机器指令直接从内存中取出并执行而不是硬盘中读出。  最常见的PHP编译缓存工具有:APC,Accelerator,xcache2、全局页面缓存– Squid Cache  Squid Cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器,Squid作为网页服务器的前置cache服务器通过缓存相关请求来提高Web服务器的速度。3、局部缓存之SQL缓存  在大多数应用程序中主要的瓶颈往往可以追溯到数据库的操作中,一般都是因为复杂的数据库查询而耗费了大量时间,而SQL缓存可以大大降低复杂查询造成的负荷。  SQL缓存的例子(使用了memcached扩展)  代码片段:  $key = md5(“some sort of sql query”);  if (!($result = memcache_get($key))) {  $result = $pdo->query($qry)->fetchAll();  // 缓存查询结果一小时  memcache_set($key, $result, NULL, 3600);  }4、局部缓存之代码块缓存  为了优化PHP程序,有时候我们不得不优化一个个代码段来减少那么一点点的执行的时间,但是比起优化复杂的不同的PHP代码段还不如通过缓存来直接忽略这些代码段的优化,这样做的好处是:1、能够很快的看到效果  2、不会破坏以前的代码  3、速度要比优化代码要快得多  代码块缓存的列子(同样使用了memcached扩展)  代码片段:  function complex_function_abc($a, $b, $c) {  $key = __FUNCTION__ . serialize  (func_get_args());  if (!($result = memcache_get($key))) {  $result = //函数代码  // 储存执行结果1小时  memcache_set($key, $result, NULL, 3600);  }  return $result;  }  当然除了上述方法外还可以用到文件缓存(将数据库中的数据取出储存在文件中),还可以生成静态HTML文件等,但是这些方法的缓存还是将文件储存在硬盘上而不是内存中。  输出控制  除了上述缓存技术外还可以通过输出控制来让程序执行的时间更少  下面通过PHP与APACHE来说说输出控制1、PHP输出控制  这里最主要用到ob_start()以及PHP中的OB系列函数,这些函数可以做什么呢?  第一就是静态模版技术。所谓静态模版技术就是通过某种方式,使得用户在client端得到的是由PHP产生的html页面。如果这个html页面不会 再被更新,那么当另外的用户再次浏览此页面时,程序将不会再调用PHP以及相关的数据库,对于某些信息量比较大的网站,例如sina,163,sohu。 类似这种的技术带来的好处是非常巨大的。  代码示例:  <?php  ob_start(); //打开缓冲区  ?>  php页面的全部输出  <?php  $content = ob_get_contents(); //取得php页面输出的全部内容  $fp = fopen(“output.html”, “w”); //创建一个文件,并打开,准备写入  fwrite($fp, $content); //把php页面的内容全部写入output.html,然后……  fclose($fp);  ?>  当然这个ob系列函数还有其他很多用处我就不在这里一一说明了。  2、apache输出控制  将SendBufferSize设置为页面大小,这样就能将页面一次性放在发送缓冲区从而增加处理速度。  SendBufferSize 指令  说明:TCP发送缓冲区大小(字节)  语法:SendBufferSize bytes  默认值:SendBufferSize 0  作用域:server config  状态:MPM  模块:beos, mpm_netware, mpm_winnt, mpmt_os2, prefork, worker  这个指令设置服务器的TCP发送缓冲区的大小(字节)。提高这个值会导致两个后果:高速度和高潜伏时间(100ms左右)。如果设置为”0″,将使用操作系统默认值。

(0)

相关推荐

  • 会声会影安装后打不开,有错误提示

    安装会声会影(版本不限)后,有时打不开,出现错误提示 操作方法 01 出现的错误提示, 02 开始,键入运行,之后选择运行 03 在运行里键入 services.msc  然后确定 04 找到  Pr ...

  • Java编程中为了性能优化应做到的26件事

    操作方法 01 电脑内存爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了.下面南宁达内小编根据网络资源 ...

  • 优化Windows7加快系统速度必做两件事

     Windows7现在已经非常普及了,相比之前的Vista系统,Windows7的速度真的是很快了,但你是否担心自己的Windows7系统就像新安装其他Windows系统一样仅仅是刚开始运行飞快,随着 ...

  • 搜索引擎优化网站优化每天必做的那点事

    描绘网站彻底后,特别是经过外包网站描绘公司制造的,需求包管网站平常保护的质量,首要作业包罗:网页信息的平常更新(包罗主页和内页),审阅用户资料及用户留言簿,整理论坛里面的一些水贴,查看网站的流量的计算 ...

  • Win8开机启动项怎么设置如何优化启动项提升开机速度

    Win8系统在系统服务以及启动项方面进行了较大的优化与调整,因此不少新安装Win8系统的朋友会发现,Win8的开机速度要比Win7更快一些。不过随着用户安装的软件逐渐增多,并且目前很多软件都具备流氓性 ...

  • 游戏优化大师能优化哪些游戏?游戏优化大师常见问题解答分享

    游戏优化大师是一款专门为游戏优化电脑环境的智能软件!有些游戏玩家的电脑配置并不差,但玩起游戏来总是是卡机。而游戏优化大师会对系统进行全面而深度的检查,分析出所有引起卡机的原因,然后自动对系统进行后台服 ...

  • 计算机BIOS优化指南

    要进入BIOS设置,在系统启动时敲DEL键(或启动时第一屏上提示的键,通常的提示是:Press Delete to setup,或其他类似的句子)。如果的BIOS不能访问或者你不能进入CMOS设置,你 ...

  • 内存的优化技巧之调整页面文件

     Windows系统内存的优化技巧, 怎样优化内存的管理, 这里介绍一下调整页面文件方面提高内存的使用效率,尽可能地提高运行速度,是每个电脑学习的都想知道的事.。下面介绍在Windows操作系统中,提 ...

  • Android版美图秀秀优化拼图排版

    看完了《北京爱情故事》,那留下太多悬念的结局,让人不由思考着关于爱的故事还会怎样延续?陈思成佟丽娅相恋却在戏外给了我们一个满意的答案。正巧,美图秀秀安卓v1.4.5新版上线,优化拼图版式和新增移轴特效 ...