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


Posted in PHP onJune 11, 2014

一、安装APC
下载 http://pecl.php.net/get/APC-3.1.9.tgz

编译参数如下:

./configure --enable-apc --enable-apc-spinlocks --disable-apc-pthreadmutex

安装过程就不说了, 标准的php扩展安装模式.

二、2套配置文件

性能高, 不适合频繁更新:

apc.enabled=1
apc.stat = 0
apc.stat_ctime = 0
apc.shm_size = 64M
apc.shm_segments = 1
apc.num_files_hint = 1000
apc.ttl = 0
apc.slam_defense = 0
apc.write_lock = 1
apc.file_update_protection = 2

性能稍低:
apc.enabled=1
apc.stat = 1
apc.stat_ctime = 1
apc.shm_size = 64M
apc.shm_segments = 1
apc.num_files_hint = 1000
apc.ttl = 86400
apc.slam_defense = 0
apc.write_lock = 1
apc.file_update_protection = 2

2套配置关键在于apc.stat, 开启后APC将不会检查文件是否更新, 这样可以减少大量不必要的系统调用.
但是, 对于新发布的问题 需要重新启动PHP. 可以根据情况选择.

另外, 附上参数说明:

apc.enabled boolean

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

apc.shm_segments integer

编译器缓存要分配的共享内存块的数目。如果 APC 用光了共享内存但是已经将 apc.shm_size 设为了系统所能允许的最大值,可以尝试增大此值。

apc.shm_size integer

以 MB 为单位的每个共享内存块的大小。默认时,有些系统(包括大多数 BSD 变种)的共享内存块大小非常低。

apc.optimization integer

优化级别。设为 0 则禁用优化器,更高的值则使用更主动的优化。期望非常有限的速度提升。尚在试验中。

apc.num_files_hint integer

Web 服务器上的被包含或被请求的不同源文件的数目的大概估计。如果不确定则设为 0 或去掉此项;此设定主要用在有数千个源文件的站点。

apc.user_entries_hint integer

与apc.num_files_hint类似, 根据唯一用户数来存储缓存变量。 如果不能确定则设置为0或或去掉此项。

apc.ttl integer

缓存条目在缓冲区中允许逗留的秒数。0 表示永不超时。建议值为7200~86400 设为 0 意味着缓冲区有可能被旧的缓存条目填满,从而导致无法缓存新条目。

apc.user_ttl integer

类似于apc.ttl,只是针对每个用户而言,建议值为7200~86400。 设为 0 意味着缓冲区有可能被旧的缓存条目填满,从而导致无法缓存新条目。 如果大于0,APC将尝试删除过期条目。

apc.gc_ttl integer

缓存条目在垃圾回收表中能够存在的秒数。此值提供了一个安全措施,即在服务器进程在执行缓存的源文件时,如果该文件被修改则旧版本将不会被回收,直到达到此 TTL 为止。设为零将禁用此特性。

apc.cache_by_default boolean

默认为 on,但可以设为 off 并和加号开头的 apc.filters 一起用,则文件仅在匹配过滤器时被缓存。

apc.filters string

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

apc.mmap_file_mask string

如果使用 --enable-mmap(默认启用)为APC编译了MMAP支持, 这里的值就是传递给mmap模块的mktemp风格的文件掩码(建议值为" /tmp/apc.XXXXXX")。 该掩码用于决定内存映射区域是否要被file-backed或者shared memory backed。 对于直接的file-backed内存映射,要设置成"/tmp/apc.XXXXXX"的样子(恰好6个X)。 要使用POSIX风格的shm_open/mmap就需要设置成"/apc.shm.XXXXXX"的样子。 你还可以设为"/dev/zero"来为匿名映射的内存使用内核的"/dev/zero"接口。 不定义此指令则表示强制使用匿名映射。

apc.slam_defense integer

在非常繁忙的服务器上,无论是启动服务还是修改文件, 都可能由于多个进程企图同时缓存一个文件而导致竞争条件。 这个选项用于设置进程在处理未被缓存的文件时跳过缓存步骤的百分率。 比如设为75表示在遇到未被缓存的文件时有75%的概率不进行缓存,从而减少碰撞几率。 反对使用该指令,鼓励设为 0来禁用这个特性。建议该用apc.write_lock指令。

Deprecated by apc.write_lock.

apc.file_update_protection integer

当你在一个运行中的服务器上修改文件时,你应当执行原子操作。 也就是先写进一个临时文件,然后将该文件重命名(mv)到最终的名字。 文本编辑器以及 cp, tar 等程序却并不是这样操作的,从而导致有可能缓冲了残缺的文件。 默认值 2 表示在访问文件时如果发现修改时间距离访问时间小于 2 秒则不做缓冲。 那个不幸的访问者可能得到残缺的内容,但是这种坏影响却不会通过缓存扩大化。 如果你能确保所有的更新操作都是原子操作,那么可以用 0 关闭此特性。 如果你的系统由于大量的IO操作导致更新缓慢,你就需要增大此值。

apc.enable_cli integer

是否为CLI版本启用APC功能,仅用于测试和调试目的才打开此选项。 在正常情况下不是理想的创建、 填充和销毁 CLI 的每个请求上的 APC 缓存,但各种测试方案很有用,能够轻松地使 CLI 版本的 PHP APC

apc.max_file_size integer

默认1M, 对于大于此值的文件将不进行缓存.

apc.stat integer

是否启用脚本更新检查。 改变这个指令值要非常小心。 默认值 On 表示APC在每次请求脚本时都检查脚本是否被更新, 如果被更新则自动重新编译和缓存编译后的内容。但这样做对性能有不利影响。 如果设为 Off 则表示不进行检查,从而使性能得到大幅提高。 但是为了使更新的内容生效,你必须重启Web服务器(译者注:如果采用cgi/fcgi类似的,需重启cgi/fcgi进程)。 生产服务器上脚本文件很少更改, 可以通过禁用本选项获得显著的性能提升。

这个指令对于include/require的文件同样有效。但是需要注意的是, 如果你使用的是相对路径,APC就必须在每一次include/require时都进行检查以定位文件。 而使用绝对路径则可以跳过检查,所以鼓励你使用绝对路径进行include/require操作。

apc.write_lock boolean

在繁忙的服务器上,Web服务器第一次被启动,或者很多文件在同一时间被修改,APC可能会多次编译同一个文件,写锁保证只有一个进程将尝试编译并缓存未缓存的脚本。其他进程试图使用该脚本将不使用opcode缓存,而不是锁定和等待缓存生成。

apc.report_autofilter boolean

是否记录所有由于early/late binding原因而自动未被缓存的脚本。

apc.include_once_override boolean

优化include_once()和require_once()函数以避免执行额外的系统调用。

apc.rfc1867 boolean

开启监控文件上传进度功能

apc.rfc1867_prefix string

用于上传文件的缓冲项条目名称前缀

apc.rfc1867_name string

需要由APC处理的上传文件的隐藏表单项名称

apc.rfc1867_freq string

用户上传文件缓存项的更新频率。 取值可以是总文件大小的百分比,或者以 "k", "m", or "g" kilobytes, megabytes, or gigabytes 结尾的绝对尺寸 (大小写不敏感). 0 表示尽可能快的更新,不过这样可能会导致上传速度下降。

apc.rfc1867_ttl bool

TTL for rfc1867 entries.

apc.localcache boolean

使用非锁定本地进程shadow-cache ,它可以减少了向缓冲区写入时锁之间的竞争。

apc.localcache.size integer

The size of the local process shadow-cache, should be set to a sufficiently large value, approximately half of apc.num_files_hint.

apc.coredump_unmap boolean

启用APC的信号句柄,例如SIGSEGV信号,当信号写入核心文件。当这些信号被接收,APC将试图取消映射的共享内存段,从核心文件中排除它。此设置可以提高系统的稳定性,当接受到致命的信号或者采用APC的大型共享内存段配置方式。

apc.stat_ctime integer

验证ctime(创建时间)可以避免SVN或者rsync带来的问题,确保自上次统计inode没有改变。APC通常只检查mtime(修改时间)。

apc.canonicalize bool

如果设置为on,则在no-state 模式(不检查文件更新)时会将相对路径改为绝对路径。

apc.preload_path string
 
apc.use_request_time bool
Use the SAPI request start time for TTL.

apc.file_md5 bool

记录文件的md5值

apc.lazy_functions integer

启用函数延迟加载

apc.lazy_classes integer

启用类延迟加载

PHP 相关文章推荐
phpBB BBcode处理的漏洞
Oct 09 PHP
php 来访国内外IP判断代码并实现页面跳转
Dec 18 PHP
收藏的PHP常用函数 推荐收藏保存
Feb 21 PHP
谨慎使用PHP的引用原因分析
Sep 06 PHP
php根据年月获取季度的方法
Mar 31 PHP
destoon实现VIP排名一直在前面排序的方法
Aug 21 PHP
smarty简单应用实例
Nov 03 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
Nov 10 PHP
PHP函数积累总结
Mar 19 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
Aug 12 PHP
PHP捕获Fatal error错误的方法
Jun 11 #PHP
PHP独立Session数据库存储操作类分享
Jun 11 #PHP
php调用nginx的mod_zip模块打包ZIP文件
Jun 11 #PHP
php+ajax导入大数据时产生的问题处理
Jun 11 #PHP
CI框架中libraries,helpers,hooks文件夹详细说明
Jun 10 #PHP
PHP图片等比例缩放生成缩略图函数分享
Jun 10 #PHP
CI(CodeIgniter)框架中的增删改查操作
Jun 10 #PHP
You might like
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
php英文单词统计器
2016/06/23 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
2017/06/02 PHP
Javascript & DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
javascript笔试题目附答案@20081025_jb51.net
2008/10/26 Javascript
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
apycom出品的jQuery精美菜单破解方法
2011/02/18 Javascript
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
json对象转字符串如何实现
2012/12/02 Javascript
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
js 概率计算(简单版)
2017/09/12 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
vue实现未登录跳转到登录页面的方法
2018/07/17 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
vue.js实现回到顶部动画效果
2019/07/31 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
[49:07]VGJ.T vs Optic Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
Python中用Decorator来简化元编程的教程
2015/04/13 Python
Python实现将DOC文档转换为PDF的方法
2015/07/25 Python
python中Switch/Case实现的示例代码
2017/11/09 Python
对python读取CT医学图像的实例详解
2019/01/24 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
美国电视购物HSN官网:HSN
2016/09/07 全球购物
美发活动策划书
2014/01/14 职场文书
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android