`
student_lp
  • 浏览: 430554 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

一、php加速器介绍

    一个php程序在运行完成后,内存马上释放,基本上所有数据都在此时销毁(仅有极少数据会缓存),也就是说此时计算机内存中基本上不存在这个php代码中的数据,这和常驻内存的java等语言有显著区别。这种缓存机制具有如下的优缺点:

    优点:有效避免内存泄露,内存回收机制更简单,避免因为一个程序的问题而连累整个服务器。

    缺点:无法复用已有数据,每个php请求都得重复执行请求--翻译--执行的过程,重复过多。

    opcode(Operation code,操作码)缓存就是虚拟机把php代码编译成一种中间码的结果缓存起来(可以缓存到磁盘或内存)。下一次php运行此页面时,只要直接解析这些代码就可以了。这样省去了Flex语法器进行语法编译和大部分语法检查(这个语法检查在多个阶段均存在)的过程,一定程度上提高了php运行速度,减轻了服务器负荷。

   注意:opcode不是php的专有名词。php的opcode是一种php脚本编译后的中间语言,就像java的bytecode,php的语言引擎Zend执行php代码时,会把php代码经过分成token,语法分析的过程转换成opcode,然后顺序执行。

二、支持缓存Opcode的php插件

    1、eAccelerator

    eAccelerator是一个自由开放源码PHP加速器,优化和动态内容缓存,提高了PHP脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使PHP程序代码执效率能提高1-10倍。从文字上可以理解为:eAccelerator是PHP加速器扩展。

    2、APC缓存

    Alternative PHP Cache (APC缓存)是一种对PHP有效的开放源高速缓冲储存器工具,他能够缓存Opcode(目标文件)的PHP中间码。 APC的缓存分两部分:系统缓存和用户数据缓存. 系统缓存 是自动使用的,是指APC把PHP文件源码的编译结果缓存起来,然后在再次调用时先对比时间标记。如果未过期,则使用缓存代码运行。默认缓存 3600s(一小时).但是这样仍会浪费大量CPU时间.因此可以在php.ini中设置system缓存为永不过期(apc.ttl=0).不过如果这样设置,改运PHP代码后需要restart一下您的web服务器(比如apache…).目前对APC的性能测试一般指的是这一层cache;从文字上理到:Alternative PHP Cache(APC缓存)也算是一种内存缓存扩展,算是数据库缓存扩展。

    3、Xcache

    是一个开源的opcode缓存器/优化器, 他能够提高服务器上的PHP性能,他通过把编译PHP后的数据缓冲到共享内存从而避免重复的编译过程, 能够直接使用缓冲区已编译的代码从而提高速度. 通常能够提高您的页面生成速率2到5倍, 降低服务器负载。 其实它与eAccelerator一样是PHP加速器扩展。

    4、以上三种缓存性能测试(来自于网上)

  请求时间(秒) 单次请求时间(毫秒) 最大内存占用(MB) 最小内存占用(MB)
None 10.41 96.08 24 24
APC 30.45 32.84 21 21
eAccelerator 31.26 31.99 23 18
XCache 30.28 33.02 29 19

    ①通过测试得出eAccelerator在请求时间和内存占用综合方面是最好的。

    ②通过测试得出使用加速器比无加速器在请求时间快了3倍左右。

    注意:如果需要安装,可以参考该文章http://www.cnblogs.com/lonelybyte/archive/2010/02/08/1666000.html

    5、opcache

    大家知道目前PHP的缓存插件一般有三个:APC、eAccelerator、XCache,但未来它们可能都会消失,因为PHP 5.5已经集成Zend Opcache,功能和前三者相似但又有少许不同,缓存速度据说比它们更快。

    这几个PHP加速插件的主要原理都相同,就是把PHP执行后的数据缓冲到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的代码从而提高速度,降低服务器负载,它们的效率是显而易见的,像庞大的CMS,每次打开一个页面要调用数十个PHP文件,执行数万行代码,效率可想而知,在安装APC等加速器后打开页面的速度明显加快。

    Zend Opcache 已经集成在了PHP 5.5里面,编译安装PHP5.5的时候加上--enable-opcache就行了。但也支持低版本的 PHP 5.2.*, 5.3.*, 5.4.*,未来会取消对5.2的支持。下面是我在PHP 5.4下的安装方法:

    依次执行下面的命令

  • wget http://pecl.php.net/get/zendopcache-7.0.2.tgz
  • tar xzf zendopcache-7.0.2.tgz
  • cd zendopcache-7.0.2
  • /usr/local/php/bin/phpize(注意:如果找不到phpize 的话自己找PHP路径,我的在/usr/local/php/bin/phpize)
  • ./configure --with-php-config=/usr/local/php/bin/php-config
  • make
  • make install

    如果显示Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/ 表示安装完成,下面要修改php的配置文件让它生效。
    在 php.ini 的最后面加入下面几行
zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20100525/opcache.so
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
    注意:128意思是给它分配128M内存,然后重启apache,用phpinfo查看是否生效,显示下面的信息就说明生效了


    在phpinfo页面的下面可以看到的运行状态:

  • 大小: 22.9 KB
  • 大小: 50.4 KB
分享到:
评论

相关推荐

    php缓存技术总结

    php缓存技术总结,全静态,部分缓存,数据缓存,查询缓存,内存式缓存,APC缓存,Opcode缓存

    PHP中opcode缓存简单用法分析

    主要介绍了PHP中opcode缓存简单用法,结合实例形式分析了opcode的概念、原理、简单开启与使用方法,需要的朋友可以参考下

    PHPcachetool清除APC_opcode缓存库.zip

    <?... namespace CacheTool; use CacheTool\Code; class CodeTest extends \PHPUnit_Framework_TestCase ... public function testFactory() ...PHPcachetool清除APC_opcode缓存库就是这么一个库。

    CacheTool:一个清除APC/opcode缓存的类库

    CacheTool一个清除APC/opcode缓存的类库

    CacheTool:一个清除APC/opcode缓存的类库.zip

    CacheTool一个清除APC/opcode缓存的类库,感兴趣的朋友们可以下载下来,用到自己的项目中。

    为PHP5.4开启Zend OPCode缓存

    PHP5.5开始内置了Zend OPcache的缓存系统,这个系统在5.2-5.4下也是可以使用的。经过测试,在php5.4下的加速性能明显,效果比5.2+ea还要好,在此推荐安装

    PHP缓存工具XCache安装与使用方法详解

    XCache是另外一种在PHP中使用的Opcode缓存工具。像APC一样,XCache在共享内存中存储Opcode,并使用缓存的Opcode来响应对PHP脚步的请求。 在Windows系统上安装XCache 1、在...

    PHP OPCode缓存 APC详细介绍

    PHP语言在性能上相对于其他编译型语言来说性能算不上突出,但是使用了OPCode缓存后性能提升还是很明显的.常见的主要有Eaccelerator,XCache,APC本文主要介绍APC的使用.

    CacheTool一个命令行工具用于清除APCopcode缓存

    CacheTool - 一个命令行工具用于清除APC/opcode缓存

    Pocs:Procs代表PHP Opcode缓存状态,并提供一个包含一些OpCache信息的简单仪表板

    Pocs代表PHP Opcode缓存状态,并提供带有一些信息的简单仪表板。 特征 显示当前状态 显示所有缓存的脚本 显示设置 通过使用基本HTTP身份验证来保护仪表板的可能性 甜甜圈图用于存储,按键,命中和重新启动 脚本的...

    PHP7如何开启Opcode打造强悍性能详解

    前言 鸟哥在博客中说,提高PHP 7性能的...那么什么是Opcache呢? ... Optimizer+ 将PHP代码预编译生成的脚本文件 Opcode 缓存在共享内存中供以后反复使用,从而避免了从磁盘读取代码再次编译的时间消耗。同时,它还应用了

    解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题

    通过启用Opcache的缓存优化,将PHP代码预编译为Opcode缓存到共享内存中供进程反复调用,从而减少了重复从磁盘解析PHP代码的时间消耗,显著的提高了PHP性能,提升了业务性能的调用,但是也引发了一些问题,就是我们每次更新...

    构建高性能Web站点_PDF_45.5M

    5.1 opcode缓存 5.2 解释器扩展模块 5.3 脚本跟踪与分析 第6章 浏览器缓存 6.1 别忘了浏览器 6.2 缓存协商 6.3 彻底消灭请求 第7章 Web服务器缓存 7.1 URL映射 7.2 缓存响应内容 7.3 缓存文件描述符 第8...

    构建高性能Web站点(PDF)

    5.1 opcode缓存 5.2 解释器扩展模块 5.3 脚本跟踪与分析 第6章 浏览器缓存 6.1 别忘了浏览器 6.2 缓存协商 6.3 彻底消灭请求 第7章 Web服务器缓存 7.1 URL映射 7.2 缓存响应内容 7.3 缓存文件描述符 第8...

    构建高性能Web站点(PDF)-第2部分

    5.1 opcode缓存 5.2 解释器扩展模块 5.3 脚本跟踪与分析 第6章 浏览器缓存 6.1 别忘了浏览器 6.2 缓存协商 6.3 彻底消灭请求 第7章 Web服务器缓存 7.1 URL映射 7.2 缓存响应内容 7.3 缓存文件描述符 第8...

    xcache3.2扩展

    XCache把PHP编译后的opcode缓存到共享内存里,避免相同的程序重复编译。用户请求相同的PHP程序时,可以直接使用缓存中已经编译好的数据,从而提高PHP的访问速度,通常可以提升2-5倍,并大幅度降低服务器负载开销。很...

Global site tag (gtag.js) - Google Analytics