深入解析php之apc
2024-05-04 22:26:53
供稿:网友
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]) 缓存一个变量到数据存储(只在变量之前没有被存储的情况)
8.apc_exists(mix keys) 检查是否有一个或者多个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()函数。不过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;
if(!apc_fetch('time1')) apc_store('time1',time());