PHP官方简介
Alternative PHP Cache (APC)是一个开放自由的PHP opcode缓存。它的目标是提供一个自由、开放和健全的框架用于缓存和优化PHP中间代码。
下载地址: http://pecl.php.net/package/apc
APC有两个主要的配置选项:
第一,多少内存将被分配给APC,ini选项apc.shm_size (integer)控制这个设置,默认值是30M。
第二,每次请求APC是否检查文件修改,ini选项apc.stat控制这个设置,默认值是1,表示每次请求脚本时都检查脚本是否被更新,如果更新则自动重新编译和缓存编译后的内容,但这样做对性能有不利影响。如果设为0则表示不进行检查,从而使性能的到大幅提高。
使用apc.php可以监控apc工作状态。如果apc运行了,缓存完全统计数目将显示缓存的命中率并且清除在最后apc.ttl秒内没有被访问的缓存。这个数字使缓存的最小化的很好配置。如果缓存不断的被填充和清除,这将影响缓存的效果和脚本的性能。减少这个数字的最好方式就是给APC分配足够多的内存。除此之外,可以通过apc.filters缓存更少的脚本。
APC的常用函数
bool
apc_add
(
string $key
,
mixed $var
[,
int $ttl = 0
] ) —— 缓存一个变量到数据存储(只在这个变量之前没有被存储的情况)
bool
apc_store
(
string $key
,
mixed $var
[,
int $ttl = 0
] ) —— 缓存一个变量到数据存储
bool
apc_clear_cache
([
string $cache_type
] ) —— 清除APC缓存
mixed
apc_fetch
(
mixed $key
[,
bool &$success
] ) ——
从缓存中取出存储的变量
mixed
apc_exists
(
mixed $keys
) ——
检查是否有一个或者多个APC键名存在
mixed
apc_delete
(
string $key
) —— 从缓存中删除一个已存储的变量
mixed
apc_delete_file
(
mixed $keys
) —— 从opcode缓存中删除给定文件的缓存
mixed
apc_compile_file
(
string $filename
[,
bool $atomic = true
] ) —— 绕过filters的限制,缓存文件
bool
apc_define_constants
(
string $key
,
array $constants
[,
bool $case_sensitive = true
] ) —— 定义一组常量
bool
apc_load_constants
(
string $key
[,
bool $case_sensitive = true
] ) —— 读取一组常量
array
apc_cache_info
([
string $cache_type
[,
bool $limited = false
]] ) —— 获取缓存信息
要注意的是
apc_clear_cache
,这个函数不会清除变量的缓存,用apc_delete(变量名),才把变量从缓存中清除掉。apc_clear_cache只会把缓存的opcode文件清除掉。
APC默认通过mmap匿名映射创建共享内存,缓存对象都存放在这块“大型”的内存空间。由APC自行管理该共享内存。
PHP预定义变量,可以使用apc_define_constants()函数。
函数apc_store(),对于系统设置等PHP变量,生命周期是整个应用(从httpd守护进程直到httpd守护进行关闭),使用apc比memcached会更好。毕竟不要经过网络传输协议tcp。
APC不适用于通过函数apc_store()缓存频繁变更的用户数据,会出现一些奇异现象。
APC本身不支持分布式
安装方式:
wget http://pecl.php.net/get/APC-3.1.2.tgz tar zxvf APC-3.1.2.tgz cd APC-3.1.2/ /usr/local/php/bin/phpize ./configure --enable-apc --with-php-config=/usr/bin/php-config make make install
make的时候出现了一点意外
/usr/include/php5/ext/pcre/php_pcre.h:29: fatal error: pcre.h: 没有那个文件或目录
sudo apt-get install libpcre3-dev
安装了这个包就解决了