APC的安装与使用详解,深入解析php之apc
分类:web前端

apc定义:apc是三个盛放自由的php opcode缓存。它的指标是提供一个随便、开放和全面包车型客车框架,用于缓存和优化php中间代码。
apc常用函数:
1.apc_clear_cache(卡塔尔 清楚apc缓存内容
2.apc_define_constants(string key,array constants,[,bool case_sensitive]卡塔尔(قطر‎   将数组constants以常量加入缓存
3.apc_load_constants(string key卡塔尔 抽出常量缓存
4.apc_store(string key,mixed var [, int ttl]卡塔尔   在缓存中保存数据
5.apc_fetch(string key) 获取apc_store保存的缓存数据
6.apc_delete(string key) 删除apc_store保存的原委
7.apc_add(string key,mixd var [, int ttl]State of Qatar  缓存三个变量到多少存款和储蓄(只在变量以前并未有被贮存的情事)
8.apc_exists(mix keysState of Qatar 检查是还是不是有三个要么多少个apc键名存在
9.apc_delete_file(mixed keys卡塔尔 从opcode缓存中剔除给定文件的缓存
10.apc_compile_file(string filename [,bool atmic=true])绕过filters的界定,缓存文件
11.apc_cache_info(string cache_type [,bool limited=false]卡塔尔国获取缓存i型奶昔
注:apc_clear_cache只撤消opcode缓存文件,apc_delete清楚缓存中的变量;预约义变量,能够选取apc_define_constants函数;php变量能够动用函数apc_store,使用apc比memcache会更加好,无需经过网络传输合同tcp;apc不适用于经过函数apc_store缓存频仍变动的顾客数量,会见世一些奇异的现象;apc自己不帮助分布式。
apc常用配备: 1.多少内部存款和储蓄器将被分配给apc,ini选项apc.shm_size(integer)调整那个设置。默感到30M
2.老是供给apc是还是不是检查文件改良,ini选项apc.stat调控那一个设置,暗中认可值为1,表示每便伏乞脚本时都减产脚本是或不是被更新,即使更新则自动重新编译和缓存编写翻译后的从头到尾的经过,对质量有比例的影响,故那一个设为0
3.因而ini选项apc.filters缓存越来越少的剧本
apc优点: 1.应用spinlocks(自旋)锁机制,可以达标最棒质量
2.apc提供apc.php,用于监察和控制和管理apc缓存。(注:改革管理员名和密码)
3.apc默认通过mmap佚名映射创制分享内部存款和储蓄器,缓存对象都存放在此块大型的内部存款和储蓄器空间。由apc自行管理该共享内部存款和储蓄器
4.调整apc.shm_size、apc.num_files_hints、apc.user_entires_hint的值到最棒
5.php预订义常量,能够利用apc _define——constants(State of Qatar函数。不过apc开荒者说pecl hidef质量越发,放弃define,它是低效的
6.apc_store,对于系统设置等PHP变量,生命周期是全部应用(从httpd守护进程到httpd守护进程关闭),使用apc比memcache越来越好。(无需通过互连网传输合同)
7.apc不适用于通过函数apc_store(卡塔尔缓存频仍改造顾客数据,会产出有的离奇现象。
例: <?php
$constants = array('APC_FILE'=>'apc.php','AUTHOR'=>'tim');
apc_define_constants('memb',$constants );
apc_load_constants('memb');
//echo APC_FILE;
//echo AUTHOR;

一、PHPAPC安装
下载与解压安装包:
复制代码 代码如下:
wget-c
tar-zvxf APC-3.1.13.tgz
cdAPC-3.1.13

if(!apc_fetch('time1')) apc_store('time1',time());
if(!apc_fetch('time2')) apc_store('time2',time(),2);
//echo apc_fetch('time1');
//echo apc_fetch('time2');

编译安装: 复制代码 代码如下:
wget-c
/usr/local/php/bin/phpize
./configure--enable-apc --enable-mmap --enable-apc-spinlocks--disable-apc-pthreadmutex--with-php-config=/usr/local/php/bin/php-config
make
sudomake install

class a{
     public function b(){echo 'success';}
}
apc_store('obj',new a());
$a = apc_fetch('obj');
//$a-b();

修改php.ini加入: 复制代码 代码如下:
 extension= "apc.so" ;
;APCsetting
apc.enabled= 1
apc.shm_segments= 1
apc.shm_size= 64M
apc.optimization= 1
apc.num_files_hint= 0
apc.ttl= 0
apc.gc_ttl= 3600
apc.cache_by_default= on

$ret = apc_exists(array('foo', 'donotexist', 'bar'));
//array(2) { ["foo"]=> bool(true) ["bar"]=> bool(true) }
?>
补偿详细安顿表明: apc.cache_by_default = on
;sys
; 是或不是默许对持有文件启用缓冲。
; 若设为off并与以加号早前的apc.filters指令一齐用,则文件仅在合营过滤器时才被缓存。

重启apache或者/usr/local/php/sbin/php-fpmrestart

apc.enable_cli = off
;sys
; 是不是为cli版本启用apc功效,仅用于测验和调节和测量试验指标才张开此命令。

二、PHPAPC配置选项 [APC]
;Alternative PHP Cache用于缓存和优化PHP中间代码
apc.cache_by_default= On ;是还是不是暗许对负有文件启用缓冲。
;若设为Off并与以加号开始的apc.filters指令一齐用,则文件仅在非常过滤器时才被缓存。
apc.enable_cli= Off ;是不是为CLI版本启用APC功用,仅用于测量检验和调节和测验指标才张开此命令。
apc.enabled= On ;是不是启用APC,假若APC被静态编写翻译进PHP又想禁止使用它,这是无出其右的艺术。
apc.file_update_protection= 2 ;当你在一个运作中的服务器上改过文件时,你应当试行原子操作。
;也正是先写进一个不经常文件,然后将该文件重命名(mv卡塔尔国到最终的名字。
;文本编辑器以至cp,tar 等程序却实际不是如此操作的,进而形成有不小希望缓冲了残缺的公文。
;私下认可值2表示在拜见文件时只要开采改过时间隔绝访谈时间低于2秒则不做缓冲。
;这三个不幸的新闻报道人员或许得到残破的剧情,不过这种坏影响却不会透过缓存扩充化。
;假让你能保险全体的换代操作都以原子操作,那么能够用0关闭此脾性。
;借令你的系统由于大量的IO操作形成立异放慢,你就需求增大此值。
apc.filters= ;二个以逗号分隔的POSIX扩充正则表明式列表。
;如若源文件名与自由一个情势匹配,则该公文不被缓存。
;注意,用来协作的文书名是传递给include/require的文本名,并非相对路线。
;假诺正则表达式的首先个字符是"+"则表示任何相配表明式的公文种被缓存,
;就算第三个字符是"-"则此外相配项都不会被缓存。"-"是暗中认可值,可以省略掉。
apc.ttl= 0 ;缓存条款在缓冲区中允许逗留的秒数。0象征毫不超时。建议值为7200~36000。
;设为0意味着缓冲区有望被旧的缓存条款填满,进而引致不可能缓存新条令。
apc.user_ttl= 0 ;肖似于apc.ttl,只是针对种种客商来说,提议值为7200~36000。
;设为0意味着缓冲区有不小或然被旧的缓存条款填满,进而以致爱莫能助缓存新条目款项。
apc.gc_ttl= 3600
;缓存条目款项在垃圾堆回笼表中能够存在的秒数。
;此值提供了一个康宁措施,就算三个服务器进程在试行缓存的源文件时崩溃,
;何况该源文件已经被涂改,为旧版本分配的内存也不会被回笼,直到达到此TTL值结束。
;设为零将禁止使用此天性。
apc.include_once_override= Off ;请保持为Off,不然或然引致意外的结果。
apc.max_file_size= 1M ;幸免大于此尺寸的公文被缓存。
apc.mmap_file_mask= ;假使运用–enable-mmap(默许启用卡塔尔为APC编写翻译了MMAP扶植,
;这里的值正是传递给mmap模块的mktemp风格的公文掩码(提议值为"/tmp/apc.XXXXXX"卡塔尔国。
;该掩码用于决定内部存款和储蓄器映射区域是还是不是要被file-backed大概sharedmemory backed。
;对于平昔的file-backed内部存款和储蓄器映射,要设置成"/tmp/apc.XXXXXX"的样子(凑巧6个X卡塔尔。
;要使用POSIX风格的shm_open/mmap就必要设置成"/apc.shm.XXXXXX"的范例。
;你还足以设为"/dev/zero"来为佚名映射的内部存款和储蓄器使用基本的"/dev/zero"接口。
;不定义此命令则意味着强逼行使无名映射。
apc.num_files_hint= 1000 ;Web服务器上只怕被含有或被呼吁的分歧源文件的轮廓数量(提议值为1024~4096)。
;假让你无法鲜明,则设为0;此设定至关心器重要用来全体数千个源文件的站点。
apc.optimization= 0 ;优化等第(建议值为0 卡塔尔国。
;正整数值表示启用优化器,值越高则应用越激进的优化。
;越来越高的值大概有卓殊轻便的速度提高,但日前尚在检查测试中。
apc.report_autofilter= Off ;是还是不是记录全体由于early/latebinding原由此活动未被缓存的脚本。
apc.shm_segments= 1 ;为编写翻译器缓冲区分配的分享内部存款和储蓄器块数量(提议值为1卡塔尔。
;假若APC耗尽了分享内部存款和储蓄器,並且已将apc.shm_size指令设为系统允许的最大值,
;你能够尝尝增大此值。
apc.shm_size= 30 ;每种分享内部存储器块的朗朗上口(以MB为单位,提出值为128~256)。
;有个别系统(满含超越五成BSD变种卡塔尔国暗许的分享内部存款和储蓄器块大小少之甚少。
apc.slam_defense= 0 ;(反驳动用该指令,提议该用apc.write_lock指令)
;在非常艰辛的服务器上,不论是运营服务或许修改文件,
;都也许出于多个进度企图同期缓存一个文本而产生竞争原则。
;那些命令用于安装进程在管理未被缓存的文件时跳过缓存步骤的百分率。
;比方设为75象征在遇见未被缓存的文书时有四分三的可能率不开展缓存,进而裁减碰撞可能率。
;慰勉设为0来剥夺那几个特点。
apc.stat= On ;是还是不是启用脚本更新检查。
;退换那么些指令值要特别小心。
;暗中同意值On表示APC在每一回乞求脚本时都检查脚本是或不是被更新,
;如若被更新则自动重新编译和缓存编写翻译后的剧情。但这么做对质量有不利影响。
;若是设为Off则象征不开展检查,进而使质量获得大幅度进步。
;可是为了使改良的源委生效,你必得重启Web服务器。
;那一个命令对于include/require的文本一律有效。然而急需潜心的是,
;即便您选拔的是相对路线,APC就务须在每三遍include/require时都实行检讨以一定文件。
;而使用相对路线则能够跳过检查,所以激励你使用相对路线实行include/require操作。
apc.user_entries_hint= 100 ;类似于num_files_hint指令,只是针对种种区别客商来讲。
;要是你无法明确,则设为0。
apc.write_lock= On ;是或不是启用写入锁。
;在丰硕繁忙的服务器上,无论是运行服务仍旧改进文件,
;都大概出于八个经过企图同有时间缓存一个文本而导致竞争法则。
;启用该指令能够幸免竞争条件的产出。
apc.rfc1867= Off ;打开该指令后,对于各样恰幸亏file字段在此以前含有

apc.enabled = on
; 是或不是启用apc,倘若apc被静态编译进php又想禁止使用它,这是独步一时的方法。

三、PHP_APC函数
apc_add
—缓存一个变量到数码存款和储蓄
apc_bin_dump— Get a binary dump of the given files and user variables
apc_bin_dumpfile— Output a binary dump of cached files and user variables to a file
apc_bin_load— Load a binary dump into the APC file/user cache
apc_bin_loadfile— Load a binary dump from a file into the APC file/user cache
apc_cache_info— Retrieves cached information from APC's data store
apc_cas— Updates an old value with a new value
apc_clear_cache—清除APC缓存
apc_compile_file— Stores a file in the bytecode cache, bypassing all filters.
apc_dec— Decrease a stored number
apc_define_constants— Defines a set of constants for retrieval and mass-definition
apc_delete_file— Deletes files from the opcode cache
apc_delete—从顾客缓存中删去某些变量
apc_exists—检查APC中是不是留存有些可能有个别key
apc_fetch—从缓存中收取存款和储蓄的变量
apc_inc—依次增加加个存款和储蓄的数字
apc_load_constants— Loads a set of constants from the cache
apc_sma_info— Retrieves APC's Shared Memory Allocation information
apc_store— Cache a variable in the data store

apc.file_update_protection = 2
;sys
; 当你在叁个运作中的服务器上改换文件时,你应当实行原子操作。
; 也正是先写进三个有时文件,然后将该文件重命名(mv卡塔尔到结尾的名字。
; 文本编辑器以至cp, tar 等程序却实际不是这么操作的,从而以致有希望缓冲了残破的公文。
; 默许值2 象征在探访文件时只要开采改革时间隔离访问时间低于2 秒则不做缓冲。
; 那多少个不幸的报事人大概赢得残破的开始和结果,不过这种坏影响却不会透过缓存扩充化。
; 若是你能确定保证全数的换代操作都以原子操作,那么能够用0 关闭此特性。
; 若是您的系统由于多量的io操作产生修改放慢,你就需求增大此值。

四、PHPAPC使用 运用apc缓存的言传身教(test_apc_cache.php):
复制代码 代码如下:
error_reporting(E_ALL);
classapcInit {
/**
*Apc缓存-设置缓存
*安装缓存key,value和缓存时间
*@param string $key KEY值
*@param string $value值
*@param string $time缓存时间
*/
publicstatic function set_cache($key, $value, $time = 0) {
if($time == 0卡塔尔 $time = null; //null景况下恒久缓存
returnapc_store($key, $value, $time);;
}
/**
*Apc缓存-获取缓存
*通过KEY获取缓存数据
*@param string $key KEY值
*/
publicstatic function get_cache($key) {
returnapc_fetch($key);
}
/**
*Apc缓存-消逝一个缓存
*从memcache中删去一条缓存
*@param string $key KEY值
*/
publicstatic function clear($key) {
returnapc_delete($key);
}
/**
*Apc缓存-清空全数缓存
*不提出利用该意义
*@return
*/
publicstatic function clear_all() {
returnapc_clear_cache(State of Qatar; //清楚缓存
}
/**
*反省APC缓存是还是不是留存
*@param string $key KEY值
*/
publicstatic function exists($key) {
returnapc_exists($key);
}
/**
*字段自增-用于记数
*@param string $key KEY值
*@param int $step新增的step值
*/
publicstatic function inc($key, $step) {
returnapc_inc($key, (int) $step);
}
/**
*字段自减-用于记数
*@param string $key KEY值
*@param int $step新增的step值
*/
publicstatic function dec($key, $step) {
returnapc_dec($key, (int) $step);
}
/**
*缓存文件
*/
publicstatic function cache_file($file) {
returnapc_compile_file($file);
}
/**
*归来APC缓存消息
*/
publicstatic function info() {
returnapc_cache_info();
}
}
apc_clear_cache();
apcInit::cache_file("HessianUtils.php");
apcInit::cache_file("Hessian1Parser.php");
apcInit::cache_file("Hessian1Writer.php");
apcInit::cache_file("HessianStream.php");
apcInit::cache_file("HessianParsing.php");
apcInit::cache_file("HessianExceptions.php");
include_once"./HessianUtils.php";
include_once"./Hessian1Parser.php";
include_once"./Hessian1Writer.php";
include_once"./HessianStream.php";
include_once"./HessianParsing.php";
include_once"./HessianExceptions.php";
header("Content-type:text/html;charset=utf-8");
header("Cache-Control:private,max-age=0,no-cache");
$HessianWriter= new Hessian1Writer();
$array= array(1, 2, 3, array('sff','张三'));
//parser
$resolver= new HessianRuleResolver('./hessian1rules.php');
//解析array
$parser_array= new Hessian1Parser($resolver, newHessianStream($HessianWriter->writeValue($array)));
print_r($parser_array->parse());
?>

apc.filters =
;sys
; 一个以逗号分隔的posix扩展正则表明式列表。
; 如若源文件名与人身自由贰个格局相称,则该文件不被缓存。
; 注意,用来协作的文件名是传递给include/require的文书名,并非相对路线。
; 假如正则表明式的率先个字符是"+"则象征任何匹配表达式的文本会被缓存,
; 假如第二个字符是"-"则此外相称项都不会被缓存。"-"是暗中同意值,能够省略掉。

五、PHPAPC监察和控制与治本 APC提供了apc.php,用于监察和控制与管理APC缓存。将apc.php放到网址目录中,纠正账号、密码,就可以通过浏览器监察和控制与管理APC缓存。
apc.php第41、42行:
复制代码 代码如下:
defaults('ADMIN_USERNAME','apc');// Admin Username
defaults('ADMIN_PASSWORD','password'); // Admin Password - CHANGE THIS TO ENABLE!!!

apc.ttl = 0
;sys
; 缓存条目款项在缓冲区中允许逗留的秒数。0 代表不要超时。建议值为7200~36000。
; 设为0 意味着缓冲区有超级大可能率被旧的缓存条款填满,进而造成敬敏不谢缓存新条令。

apc.user_ttl = 0
;sys
; 相符于apc.ttl,只是针对每一种客户来说,建议值为7200~36000。
; 设为0 意味着缓冲区有望被旧的缓存条约填满,进而形成无法缓存新条令。

apc.gc_ttl = 3600
;sys
; 缓存条目款项在废品回笼表中能够存在的秒数。
; 此值提供了三个康宁措施,固然二个服务器进度在实践缓存的源文件时崩溃,
; 何况该源文件已经被改良,为旧版本分配的内部存款和储蓄器也不会被回笼,直到达到此ttl值结束。
; 设为零将禁止使用此个性。

apc.include_once_override = off
;sys
; 关于该指令近期尚无表明文书档案,参见:
; 请保持为off,不然只怕形成意外的结果。

apc.max_file_size = 1m
;sys
; 禁绝大于此尺寸的文本被缓存。

apc.mmap_file_mask =
;sys
; 假诺选用–enable-mmap(暗中认可启用卡塔尔国为apc编写翻译了mmap帮助,
; 这里的值正是传递给mmap模块的mktemp风格的文本掩码(提议值为"/tmp/apc.xxxxxx"State of Qatar。
; 该掩码用于决定内部存款和储蓄器映射区域是还是不是要被file-backed也许shared memory backed。
; 对于直接的file-backed内部存储器映射,要设置成"/tmp/apc.xxxxxx"的指南(正好6个x卡塔尔国。
; 要使用posix风格的shm_open/mmap就须求设置成"/apc.shm.xxxxxx"的旗帜。
; 你还能设为"/dev/zero"来为佚名映射的内部存款和储蓄器使用基本的"/dev/zero"接口。
; 不定义此命令则表示强逼行使匿名映射。

apc.num_files_hint = 1000
;sys
; web服务器上只怕被含有或被呼吁的分歧源文件的大概数量(建议值为1024~4096)。
; 借令你无法明显,则设为0 ;此设定十分重要用于全部数千个源文件的站点。

apc.optimization = 0
; 优化等第(建议值为0 卡塔尔 。
; 正整数值表示启用优化器,值越高则选拔越激进的优化。
; 越来越高的值只怕有充裕轻易的速度升高,但日前尚在检测中。

apc.report_autofilter = off
;sys
; 是或不是记录全体由于early/late binding原由此活动未被缓存的本子。

apc.shm_segments = 1
;sys
; 为编写翻译器缓冲区分配的分享内部存款和储蓄器块数量(建议值为1State of Qatar。
; 假如apc耗尽了分享内部存款和储蓄器,並且已将apc.shm_size指令设为系统允许的最大值,
; 你能够品尝增大此值。

apc.shm_size = 30
;sys
; 每一种分享内部存款和储蓄器块的轻重(以mb为单位,建议值为128~256)。
; 有些系统(蕴涵当先1/3bsd变种卡塔尔(قطر‎默许的分享内部存储器块大小超级少。

apc.slam_defense = 0
;sys(批驳选用该指令,建议该用apc.write_lock指令)
; 在非常辛苦的服务器上,无论是运营服务或许修正文件,
; 都也许是因为多少个经过企图同不经常间缓存三个文件而引致竞争条件。
; 那一个命令用于安装进程在管理未被缓存的文本时跳过缓存步骤的百分率。
; 比方设为75象征在遇到未被缓存的文本时有伍分之一的票房价值不开展缓存,从而减少碰撞概率。
; 勉励设为0 来剥夺这么些特点。

apc.stat = on
;sys
; 是还是不是启用脚本更新检查。
; 改造那一个指令值要十二分当心。
; 暗中认可值on 表示apc在历次须要脚本时都检查脚本是还是不是被更新,
; 若是被更新则自动重新编写翻译和缓存编写翻译后的剧情。但诸如此比做对质量有不利影响。
; 若是设为 off 则代表不进行检讨,进而使质量获得大幅度提升。
; 不过为着使更改的剧情生效,你必须要重启web服务器。
; 那些命令对于include/require的文书一律有效。可是急需小心的是,
; 假设您利用的是相对路线,apc就非得在每二次include/require时都举行自己商酌以平素文件。
; 而接收相对路径则足以跳过检查,所以鼓舞你选择相对路线实行include/require操作。

apc.user_entries_hint = 100
;sys
; 类似于num_files_hint指令,只是针对各种分裂客商来说。
; 要是您无法显著,则设为0 。

apc.write_lock = on
;sys
; 是或不是启用写入锁。
; 在这里么些辛苦的服务器上,无论是运营服务或许改正文件,
; 都可能鉴于四个进程思考同期缓存二个文本而产生竞争准绳。
; 启用该指令可防止止竞争准则的产出。

apc.rfc1867 = off
;sys
; 张开该指令后,对于每一个恰还好file字段从前含有apc_upload_progress字段的上传文件,
; apc都将自行创立二个upload_的顾客缓存条约(就是apc_upload_progress字段值)。

本文由10bet手机官网发布于web前端,转载请注明出处:APC的安装与使用详解,深入解析php之apc

上一篇:web配置简单实现方法,验证码不显示只有一个小红叉的解决方法 下一篇:深入分析php之面向对象,php5中类的学习
猜你喜欢
热门排行
精彩图文