`
purpen
  • 浏览: 796728 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PHP APC 配置详解

阅读更多

APC是Alternative PHP Cache的简称,是 PHP 的一个免费公开的优化代码缓存。它用来提供免费,公开并且强健的架构来缓存和优化 PHP 的中间代码。

 

APC模块的参数配置

 

Name Default Changeable Changelog
apc.enabled 1 PHP_INI_ALL
apc.shm_segments 1 PHP_INI_SYSTEM
apc.shm_size 30 PHP_INI_SYSTEM
apc.optimization 0 PHP_INI_ALL
apc.num_files_hint 1000 PHP_INI_SYSTEM
apc.ttl 0 PHP_INI_SYSTEM
apc.gc_ttl 3600 PHP_INI_SYSTEM
apc.cache_by_default On PHP_INI_SYSTEM
apc.filters "" PHP_INI_SYSTEM
apc.mmap_file_mask "" PHP_INI_SYSTEM
apc.slam_defense 0 PHP_INI_SYSTEM
apc.file_update_protection 2 PHP_INI_SYSTEM
apc.enable_cli 0 PHP_INI_SYSTEM > APC 3.0.6

 

apc.enabled 布尔型
apc.enabled 可以被设成 0 来禁用 APC。这主要是有用的,当 APC 被静态编译入 PHP 时,因为没有其它方法来禁用它(当编译为 DSO 的时候,可以将 php.ini 中的 extension 行注释掉)。

apc.shm_segments 整型
对编译缓存分配共享内存块的数量。如果APC用光了共享内存,而且你已经设置 apc.shm_size为系统允许的最大值的情况下,你可以试着去提高这个参数的值。

apc.shm_size 整型
每个共享内存块的大小是以MB为单位的。在默认情况下,一些系统(包括大多数BSD变种系统)的共享内存块的大小限制的很低。

apc.optimization 整型
优化等级。设为0则禁用优化,越高的值使用越强有力的优化。期待有适度的速度上的改进。这个还是实验性质的。

apc.num_files_hint 整型
对在你的Web服务器上被包含和请求的不同的源文件的数量的提示。如果你无法确定,设置为0或者省略;这个设置主要可能用于有成千的源文件的站点。

apc.ttl 整型
当一个缓存条目在缓存区的位置被另一个条目需要时,我们需要考虑的是这个缓存条目在缓存区的位置被允许空闲的秒数。将这个参数设置为0意味着你的缓存可能 充满不新鲜的条目,同时导致新的条目无法被缓存。

apc.gc_ttl 整型
缓存条目在垃圾收集列表中存活的秒数。这个值提供了出错保护在执行一个缓存源文件,而同时服务器进程死了的事件中。如果那个源文件被修改,内存分配给旧版 本的缓存条目将不会被回收,直到这个参数设定的TTL值到的时候。设置为0就是禁止这个特性。

apc.cache_by_default 布尔型
默认为On,但可以被设置为Off并和以加号开头的apc.filters配合使用,文件仅仅在匹配过滤器时才被缓存。

apc.filters 字符串
一个以逗号分割的POSIX扩展正则表达式的列表。如果任何模式匹配源文件名,这个文件将不会被缓存。注意用来匹配的文件名是传递给 include/require 的文件名,而不是绝对路径。如果正则表达式的第一个字符是 + ,则这个表达式就意味着任何匹配表达式的文件将会被缓存,如果第一个字符是 - 则任何匹配都不会被缓存。 - 是默认值,所以可以被省略。

apc.mmap_file_mask 字符串
If compiled with MMAP support by using --enable-mmap this is the mktemp-style file_mask to pass to the mmap module for determing whether your mmap'ed memory region is going to be file-backed or shared memory backed. For straight file-backed mmap, set it to something like/tmp/apc.XXXXXX (exactly 6 Xs). To use POSIX-style shm_open/mmap put a .shm somewhere in your mask. e.g. /apc.shm.XXXXXX You can also set it to /dev/zero to use your kernel's/dev/zero interface to anonymous mmap'ed memory. Leaving it undefined will force an anonymous mmap.

apc.slam_defense 整型
在非常繁忙的服务器上,无论你启动服务还是修改文件,你都会导致一种多进程都试图在同一个时间缓存同一个文件的竞争。这个选项设置了进程跳过试图去缓存一 个未被缓存的文件的百分比。或者可以把这个想象成一个单独进程跳过缓存的机率。例如,设置apc.slam_defense为75就意味着进程有75%的 机率不去缓存未被缓存的文件。所以,设置的越高,越能减少缓存的碰撞机率。设置为0则禁用这个特性。

apc.file_update_protection 整型
当你在一个运行着的服务器上修改文件时,你应该执行原子操作。也就是,先写一个临时文件,当写完后再重命名(mv)这个文件到它的最终位置。许多文本编辑 器,cp,tar和其他一些类似程序都不是这样操作的。这就意味着有机会去访问和(缓存)文件,当这个文件还在被写的情况下。 apc.file_update_protection的设置使得缓存标记新文件的延迟。默认值是2,意味着如果发现文件的修改时间距离访问时间不到2 秒,文件将不会被缓存。访问写到一半的文件的不幸用户将会看到离奇的情况,但至少这种情况不是持续的。如果你确信你经常使用原子操作来更新你的文件,你可 以关闭这个保护通过设置这个参数为0。如果你的系统充满io操作,并导致更新程序花费超过2秒,你可能需要去增大这个值。

apc.enable-cli 整型
大多是为了测试和调试。为CLI版本的PHP开启动APC功能。一般来说,你将不会想到为每一个 CLI请求创建,移植和放弃APC的缓存,但对于各种测试情况,这是很容易的为了CLI版本开启APC。

 

 

APC的安装:

 

一般是从http://pecl.php.net/package/APC下载源代码,然后phpize来编译安装,安装完以后在加上php.ini里加上:

 

extension=apc.so

 

同时,记得要在PHP.ini中打开opcode cache的开关:

 

apc.cache_by_default = on

 

同时也可以通过apc.filters让APC只对特定范围的动态程序进行opcode缓存。

 

 

使用php apc模块需要注意的几点

 

在maillist中看到Rasmus的一段对于php APC模块的发言。作为APC的作者,他的见解应该是很有参考价值的。

 

    APC will probably be 20-30% faster, but if you are writing to it frequently it can cause problems. The APC cache is best for things that change very rarely. And by very rarely I mean days, not hours or minutes.

    Because of the way APC does an anonymous file-backed mmap where I unlink the file at startup to get process-death protection, it isn’t easy to get at the cache from a separate standalone command line script. That can be solved by mmap’ing slightly differently, but in the default config your approach won’t work.

    -Rasmus 

 

就是说APC不适合用于频繁写的场合,你最好只用它来保存那种几天都不会更改的内容。否则出了莫名其妙的问题就不好怎么解释了。

在以前的应用中,我确实有将apc用在频繁写的场合,偶尔会出现内存耗尽,进而引起所有http请求卡死,形式一发不可收拾整个服务器当掉。所以现在我仅仅用apc来缓存opcode的php代码,不在程序中显式的调用它,算是相安无事。

 

分享到:
评论

相关推荐

    PHP APC配置文件2套和参数详解

    **PHP APC配置详解** PHP Alternative PHP Cache (APC) 是一个免费且开源的 PHP 缓存和优化工具,用于加速 PHP 应用程序的运行。它通过存储预编译的 PHP 代码在共享内存中来减少对磁盘的读取,从而提高性能。本文将...

    php_apc.dll

    **PHP APC (Alternative PHP Cache) 插件详解** 在PHP开发环境中,APC(Alternative PHP Cache)是一个非常重要的加速器和缓存工具。它能够优化PHP的性能,通过缓存编译后的PHP代码来减少每次请求时的解析时间。...

    php5.3.3_APC扩展模块

    **PHP 5.3.3 APC扩展模块详解** 在PHP的开发环境中,加速器(如Alternative PHP Cache,简称APC)扮演着至关重要的角色。APC是PHP的一个免费且开源的 opcode 缓存,用于提高PHP脚本的执行速度。在PHP 5.3.3版本中,...

    php 5.4 apc扩展 dll文件

    **PHP 5.4 APC 扩展 DLL 文件详解** PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,特别适用于Web开发,可以嵌入到HTML中使用。在PHP 5.4版本中,Alternative PHP Cache (APC)是一个非常重要的性能...

    PHP APC缓存配置、使用详解

    【PHP APC缓存配置、使用详解】 PHP APC(Alternative PHP Cache)是一种PHP缓存解决方案,旨在提高PHP应用程序的性能和效率。它通过缓存PHP源码的编译结果,减少了PHP解释器对代码的重复解析和编译,从而提升了...

    PHP APC的安装与使用详解

    APC 配置可以通过 `php.ini` 文件进行,下面是一些主要的配置选项及其解释: - `apc.cache_by_default`:开启或关闭默认的文件缓存,设为 `On` 表示开启。 - `apc.enable_cli`:控制 CLI 版本的 APC 是否启用,通常...

    Nginx + PHP-FPM + APC=绝妙的组合

    【Nginx + PHP-FPM + APC 绝妙组合详解】 在互联网服务领域,Nginx、PHP-FPM(PHP FastCGI Process Manager)和 Alternative PHP Cache (APC) 的结合已经成为一种高效的Web服务器配置模式,尤其适用于高流量网站。...

    Nginx+PHP-FPM+APC=绝妙的组合.pdf

    【Nginx+PHP-FPM+APC 组合详解】 Nginx+PHP-FPM+APC是一种高效的Web服务架构,特别适用于处理高流量的PHP应用。这种组合的优势在于优化资源利用,提高服务器响应速度,减少内存消耗,并提供更好的性能。 首先,...

    PHP网络编程技术详解.rar

    了解服务器配置和PHP配置文件(php.ini)对于优化性能和解决服务器问题很有帮助。 5. **数据库连接与操作**:PHP常与MySQL、PostgreSQL等数据库系统配合,实现数据的存储和检索。PDO(PHP Data Objects)和mysqli...

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

    其中,Alternative PHP Cache (APC) 和 Zend Optimizer+ 的Opcode缓存是两个常用的PHP加速工具。它们能够将PHP代码编译为中间语言(Opcode),减少解释器的工作量,提高执行效率。然而,随着代码更新,有时需要清除...

    phpstudy php5.2.17nts 下载

    3. 性能优化:虽然不支持多线程,但可以通过调整PHP配置、缓存策略(如APC、Memcached)以及数据库优化等方式提升性能。 总的来说,PHPStudy提供的PHP5.2.17 NTS版本为开发者提供了回溯到旧版本PHP的便利,帮助他们...

    php5.6_centos.tar.gz

    《PHP 5.6在CentOS系统中的应用与配置详解》 PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,尤其适用于Web开发,可嵌入到HTML中使用。PHP 5.6作为其重要的一个版本,在很多现有的项目中仍然被广泛...

    php 集成环境 Apache+MySQL+PHP集成环境汇总

    **PHP集成环境详解** 在Windows操作系统中搭建PHP开发环境,主要涉及到三个核心组件:Apache HTTP服务器、MySQL数据库管理系统以及PHP脚本解释器。这三者合称为“LAMP”(Linux, Apache, MySQL, PHP)架构在Windows...

    详解php 缓存技术

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

    基于PHP的QPHP快速phpmvc框架forWin源码.zip

    【QPHP快速phpmvc框架详解】 QPHP是一个针对Windows环境设计的快速PHP MVC(Model-View-Controller)框架,旨在简化开发流程,提高开发效率。本文将深入探讨QPHP框架的核心概念、架构以及如何在实际项目中应用。 ...

    php-pecl-5.4.16-Win32-VC9-x86_eaccelerator

    《PHP扩展eAccelerator在Windows环境下的安装与配置详解》 PHP作为一种强大的开源脚本语言,在Web开发领域占据着重要地位。为了提升PHP应用程序的性能,开发者常常会使用各种缓存和加速工具,其中eAccelerator就是...

    PHP实现的一个开源的企业门户网站

    【PHP实现的企业门户网站详解】 PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,尤其在Web开发领域,PHP的应用极为广泛。本项目是一个基于PHP实现的企业门户网站,旨在为用户提供一个可定制、可扩展...

Global site tag (gtag.js) - Google Analytics