`
student_lp
  • 浏览: 436623 次
  • 性别: 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
分享到:
评论

相关推荐

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

    在深入了解CacheTool之前,我们先来了解一下APC和opcode缓存这两个概念。 **1. APC(Alternative PHP Cache)** APC是PHP的一个扩展,全称为“替代PHP缓存”,它提供了一个共享内存存储机制,用于存储编译后的PHP...

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

    **CacheTool:APC与Opcode缓存清理利器** 在PHP开发中,缓存技术是提升网站性能的关键之一。其中,Alternative PHP Cache (APC) 和 Zend Optimizer+ 的Opcode缓存是两个常用的PHP加速工具。它们能够将PHP代码编译为...

    PHP中opcode缓存简单用法分析

    6. opcode缓存的作用:生成opcode需要系统开销,且每次执行代码时都需要重新生成,这会导致明显的性能开销。因此,开启opcode缓存可以避免重复的编译过程,提高PHP的性能。常用的PHP opcode缓存工具有APC、...

    PHPcachetool清除APC_opcode缓存库.zip

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

    php+redis服务器的缓存类

    PHP缓存通常包括文件缓存、APC(Alternative PHP Cache)、OpCache(PHP内置的opcode缓存)以及数据库缓存等。这里的PHP+Redis缓存类,就是通过Redis来实现这一目的。 2. **Redis缓存**:Redis是一个键值对存储系统...

    为PHP5.4开启Zend OPCode缓存

    标题所涉及的知识点为“为PHP5.4开启Zend OPCode缓存”。这意味着需要掌握PHP的版本信息、Zend OPCode缓存的概念、为何需要开启缓存、如何为PHP5.4版本开启Zend OPCode缓存等。以下是对这些知识点的详细解释: PHP...

    PHP常见缓存技术分析(cache)

    OPcache也提供opcode缓存,但相比APC,OPcache更高效、更稳定,并且具有内存管理优化。配置OPcache可以显著提升PHP应用的运行速度,尤其是对于CPU密集型的Web应用。 ### 3. 文件缓存:file-based caching 文件缓存...

    php运行时缓存ObjectCache

    运行时缓存,也称为OPcache(Opcode Cache),其核心思想是将PHP脚本编译后的字节码存储在内存中,避免每次请求时重复编译。当一个PHP脚本首次运行时,解释器会将其解析并转化为机器可以理解的字节码。有了运行时...

    PHP OPCode缓存 APC详细介绍

    PHP OPCode缓存是提高PHP性能的关键技术之一。在解释型语言PHP中,代码需要经过解释器逐行解析成操作码(OPCode)才能执行,这个过程在每次请求时都会发生,导致性能损耗。OPCode缓存机制可以将解析后的OPCode存储在...

    PHP服务缓存加速优化实战.docx

    PHP 缓存加速器是提高 PHP 应用程序性能的关键技术之一。它可以将编译后的操作码文件保存下来,并放到共享内存里,以便在下一次调用该 PHP 页面时重用它,避免了相同代码的重复编译,节省了 PHP 引擎重复编译的时间...

    详解php 缓存技术

    3. 内存缓存(Memory Cache):如APC(Alternative PHP Cache)、OPcache(PHP自带的Opcode缓存),它们将编译后的PHP代码存储在内存中,加快代码执行速度。 4. 对象缓存(Object Cache):如PHP的PDO_Memcached扩展...

    深化理解PHP之OpCode原理详解_.docx

    例如,APC 缓存可以使得 PHP 缓存 Opcodes,从而减少执行时间。 Zend/zend_language_scanner.c 文件会根据 Zend/zend_language_scanner.l(Lex 文件)对输入的 PHP 代码进行词法分析,从而得到一个一个的“词”。 ...

    PHP缓存技术[总结].pdf

    这些是PHP的opcode缓存器,它们将PHP脚本编译后的中间代码(opcode)存储在内存中,避免了每次请求时重复编译的过程,显著提升了PHP应用的运行速度。 8. MySQL缓存: MySQL自身提供了查询缓存功能,对于重复的SQL...

    php memcache php_apc php_file 缓存插件

    APC是PHP的一个 opcode 缓存器,它可以将PHP代码编译后的中间表示(opcode)存储在共享内存中,从而避免每次请求时都重新编译PHP脚本。此外,APC还提供了用户数据缓存功能,类似于Memcache,但直接在服务器内存中...

    PHPCache,php 缓存控制

    PHP Cache的工作原理是将执行过的PHP脚本编译后的opcode(操作码)存储在内存中,当后续请求相同脚本时,不再需要重新解析和编译,直接从缓存中读取并执行,减少了CPU和内存资源的消耗。这种技术尤其适用于那些静态...

    php文件缓存

    1. **Opcode缓存**:如APC (Alternative PHP Cache)、eAccelerator、OpCache(自PHP 5.5起内置)。这些缓存工具将编译后的PHP字节码存储在内存中,下次请求相同脚本时,可以直接从内存中读取,跳过编译步骤。OpCache...

Global site tag (gtag.js) - Google Analytics